一点睛
1 golang 中没有一个专门的方法针对 map 的 key 进行排序。
2 golang 中的 map 默认是无序的,注意也不是按照添加的顺序存放的,每次遍历,得到的输出可能不一样。
3 golang 中 map 的排序,是先将 key 进行排序,然后根据 key 值遍历输出即可。
二代码
package main
import (
"fmt"
"sort"
)
func main() {
// map的排序
map1 := make(map[int]int)
map1[10] = 100
map1[1] = 13
map1[4] = 56
map1[8] = 90
fmt.Println(map1)
// 按照 map 的 key 的顺序进行排序输出
// 1 先将 map 的 key 放入到切片中。
// 2 对切片排序。
// 3 遍历切片,然后按照 key 来输出 map 的值。
var keys []int
for k, _ := range map1 {
keys = append(keys, k)
}
// 排序
sort.Ints(keys)
fmt.Println(keys)
for _, k := range keys {
fmt.Printf("map1[%v]=%v
", k, map1[k])
}
}
三测试
map[10:100 1:13 4:56 8:90]
[1 4 8 10]
map1[1]=13
map1[4]=56
map1[8]=90
map1[10]=100
map[4:56 8:90 10:100 1:13]
[1 4 8 10]
map1[1]=13
map1[4]=56
map1[8]=90
map1[10]=100