1 切片排序
var a = [...]int{1, 8, 38, 2, 348, 484}
sort.Ints(a[:])
log.Println(a)
打印结果
2 切片结构体根据某个属性排序
根据num 字段升序排
testStructs := []testSturct{
{
Name: "test2",
Num: 2,
},
{
Name: "test3",
Num: 3,
},
{
Name: "test1",
Num: 1,
},
}
sort.Slice(testStructs, func(i, j int) bool {
return testStructs[j].Num > testStructs[i].Num // 升序
// return testStructs[i].Num > testStructs[j].Num // 降序
})
log.Println(testStructs)
打印结果
map排序
m := map[int]string{
3:"three",
1:"one",
2:"two",
}
var keys []int
for k := range m {
keys = append(keys, k)
}
//对key排序
sort.Ints(keys)
//根据key从m中拿元素,就是按顺序拿了
for _, k := range keys {
log.Println("Key:", k, "Value:", m[k])
}
打印结果
切片从大到小排序
package main
import (
"fmt"
"log"
"sort"
)
func main() {
a := []int{3, 5, 4, -1, 9, 11, -14}
sort.Ints(a)
fmt.Println(a)
sort.Sort(sort.Reverse(sort.IntSlice(a)))
log.Println(a)
ss := []string{"surface", "ipad", "mac pro", "mac air", "think pad", "idea pad"}
sort.Strings(ss)
fmt.Println(ss)
sort.Sort(sort.Reverse(sort.StringSlice(ss)))
fmt.Printf("After reverse: %v\n", ss)
}
// 接口实现排序
https://blog.csdn.net/raoxiaoya/article/details/115333536