好吧,所以我对Go很新,我想让自己熟悉按函数排序。我可能误解了一些东西,所以如果我错了,请纠正我。golang不能使用type作为类型sort.Interface参数sort.Sort

Nodeskeyvalue
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

2017-10-12 MrPyCharm

+1

Less方法的签名是错误的。它应该采取两个整数。请参阅[规范包示例](https://golang.org/pkg/sort/#example_)。 –

+0

我应该如何修改它? –

+1

请参阅[规范软件包示例](https://golang.org/pkg/sort/#example_)。 –