我们知道golang里的map是无序的,不像python里的字典还可以对键值对顺序反序啥的。所以我们下面手动实现map的有序输出,其实原理很简单!
package main
import (
"fmt"
"sort"
)
func main() {
map1 := make(map[int]string, 5)
map1[1] = "www.topgoer.com"
map1[2] = "rpc.topgoer.com"
map1[5] = "ceshi"
map1[3] = "xiaohong"
map1[4] = "xiaohuang"
sli := []int{}
for k, _ := range map1 {
sli = append(sli, k)
}
sort.Ints(sli)
for i := 0; i < len(map1); i++ {
fmt.Println(map1[sli[i]])
}
}
上面代码就是定义并初始化了一个map,定义了一个空切片sli,并遍历map将map的键都存进切片sli里,并对sli进行排序就得到了有序的键,最后只需要从切片sli里取出键即可。
这里有个小技巧:
这里遍历map只取出键没取出值,这是因为知道键就能根据map直接得到值,所以提升了一点效率!
顺便复习一下定义切片的三种方式: