实现map有序输出

我们知道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直接得到值,所以提升了一点效率! 

 顺便复习一下定义切片的三种方式:

猜你喜欢

转载自blog.csdn.net/qq_55621259/article/details/127875113
今日推荐