Go语言中的map是一个无序的键值对集合,其键是唯一的,可通过键快速检索到值。
1. 初始化一个map集合
m := map[string]int{
"a": 2,
"b": 1,
"c": 3,
}
for k, v := range m {
fmt.Println(k, v)
}
由于map是无序的,此段代码每次运行结果都是不一样的
2. 对map进行有序输出
从小到大排序
其实现原理是先对集合的key(键)进行排序,再根据排序好的键进行遍历输出
m := map[string]int{
"a": 2,
"b": 1,
"c": 3,
}
keys := make([]string, 0, len(m))
for k := range m {
keys = append(keys, k)
}
// 从小到大排序
sort.Strings(keys)
for _, k := range keys {
fmt.Println(k, m[k])
}
由于键是英文字母,其排序规则是根据字母进行排序
从大到小排序
m := map[string]int{
"a": 2,
"b": 1,
"c": 3,
}
keys := make([]string, 0, len(m))
for k := range m {
keys = append(keys, k)
}
// 从大到小排序
sort.Sort(sort.Reverse(sort.StringSlice(keys)))
for _, k := range keys {
fmt.Println(k, m[k])
}
自定义排序 sort.Slice
arr := []int{7, 4, 10, 6, 1, 2, 9, 3, 5, 8}
通过sort.Slice 将上方数组进行从大到小排序
arr := []int{7, 4, 10, 6, 1, 2, 9, 3, 5, 8}
sort.Slice(arr, func(i, j int) bool {
return arr[i] > arr[j]
})
fmt.Println(arr)
输出结果: