Go 语言提供了sort包,可以用来排序。但需要排序的对象必须实现sort.Interface接口。
sort.Interface 定义:
type Interface interface {
Len() int
Less(i, j int) bool
Swap(i, j int)
}
现在需要对一群人按年龄升序排序,首先定义Human类型
type Human struct {
Name string
Age int
}
然后定义集合类型Humans
type Humans []Human
Humans 实现sort.Interface接口
// Len 是集合中元素的数量
func (h Humans) Len() int {
return len(h)
}
// 比较索引为i的元素是否小于索引为j的元素
func (h Humans) Less(i, j int) bool {
return h[i].Age < h[j].Age
}
// Swap 交换索引为 i 和 j 的元素。
func (h Humans) Swap(i, j int) {
h[i], h[j] = h[j], h[i]
}
升序排序
func main() {
var humans Humans
...
sort.Sort(humans)
...
}
降序排序
func main() {
var humans Humans
...
sort.Sort(sort.Reverse(humans))
...
}