sort模块是golang内置的排序模块,但其直接支持的只有int, float64,string等几个数据结构,其他数据结构没有直接的函数供调用.
比如sort.Strings()
只接收[]string
, sort.Ints()
只接收[]int
,如果要对[]int64排序就不能直接调用了.如下图
但sort模块提供了一个非常灵活的函数sort.Slice(slice interface{}, less func(i, j int) bool)
,第一个参数是要排序的切片.第二个参数是一个函数,函数接收两个index值,返回 slice[ I] < slice[j]
这个bool值.
实例代码如下:
package main
import (
"fmt"
"sort"
)
func main() {
a := []uint64{5, 9, 8, 3, 1, 100, 0}
fmt.Println(a)
sort.Slice(a, func(i, j int) bool { return a[i] < a[j] })
fmt.Println(a)
}
结果如下:
mbp:test lixiaowu$ go run main.go
[5 9 8 3 1 100 0]
[0 1 3 5 8 9 100]