Go语言笔记—sort包实现组合数据类型、结构体的排序
sort包
sort包提供了排序切片和用户自定义数据集的函数
函数
func Slice(x interface{}, less func(i, j int) bool)
参数x是空接口类型,应当是组合数据类型,如切片。
参数less是布尔函数类型,有两个索引参数i、j,如果i的对应值小于j的返回true。通常使用匿名函数。i和j分别可以理解为self、other。
example:
package main
import (
"fmt"
"sort"
)
func main() {
people := []struct {
Name string
Age int
}{
{"Gopher", 7},
{"Alice", 55},
{"Vera", 24},
{"Bob", 75},
}
sort.Slice(people, func(i, j int) bool { return people[i].Name < people[j].Name })
fmt.Println("By name:", people)
// By name: [{Alice 55} {Bob 75} {Gopher 7} {Vera 24}]
sort.Slice(people, func(i, j int) bool { return people[i].Age < people[j].Age })
fmt.Println("By age:", people)
// By age: [{Gopher 7} {Vera 24} {Alice 55} {Bob 75}]
}
package main
import (
"fmt"
"sort"
)
func main() {
courses := [][]int{{2,3},{5,6},{1,2},{3,5},{4,8},{3,7}}
fmt.Println(courses)
// [[2 3] [5 6] [1 2] [3 5] [4 8] [3 7]]
sort.Slice(courses,func(i,j int) bool {return courses[i][1] < courses[j][1]})
fmt.Println(courses)
// [[1 2] [2 3] [3 5] [5 6] [3 7] [4 8]]
}