さて、私は非常に新しいです。私は自分自身を関数のソートに慣れさせようとしています。私は何か誤解しているかもしれないので、間違っていれば私を修正してください。golangは型sortとして型を使用することはできません。sort.Sortへの引数のインタフェース
フィールドkey
とvalue
を持つNodes
の配列を作成しようとしています。彼らのキーでノードの配列をソートするカスタムソート関数を作成したいと思います。
package main
import (
"sort"
"fmt"
)
type Node struct {
key, value int
}
type ByKey []Node
func (s ByKey) Len() int {
return len(s)
}
func (s ByKey) Swap(i, j Node) {
temp := Node{key: i.key, value : i.value}
i.key, i.value = j.key, j.value
j.key, j.value = temp.key, temp.value
}
func (s ByKey) Less(i, j Node) bool {
return i.key < j.key
}
func main(){
nodes := []Node{
{ key : 1, value : 100 },
{ key : 2, value : 200 },
{ key : 3, value : 50 },
}
sort.Sort(ByKey(nodes))
fmt.Println(nodes)
}
しかし、私はSort
を呼び出していますラインで、このエラーを取得しておく:ここに私のこれまで取り組んだ
cannot use ByKey(nodes) (type ByKey) as type sort.Interface in argument to sort.Sort:
ByKey does not implement sort.Interface (wrong type for Less method)
have Less(Node, Node) bool
want Less(int, int) bool
私はこのエラーが伝えしようとしているのかわからないです。どんな助けもありがとう。 TIA
Lessメソッドの署名が間違っています。 2つのintを取ることになっています。 [標準パッケージの例](https://golang.org/pkg/sort/#example_)を参照してください。 – Peter
私はそれをどのように変更する必要がありますか? – MrPyCharm
[標準パッケージの例](https://golang.org/pkg/sort/#example_)を参照してください。 – Peter