我是golang的新手,我想在这样的地图中反转对的出现顺序,以便最后一对出现:
mapA := map[string]int {
"cat": 5,
"dog": 2,
"fish": 3 ,
}
fmt.Println(mapA)
map[cat:5 dog:2 fish:3]
Run Code Online (Sandbox Code Playgroud)
生成的地图应该像:
map[fish:3 dog:2 cat:5]
Run Code Online (Sandbox Code Playgroud)
它可以是具有相同项目但是顺序的新mapB.
我怎样才能做到这一点?
地图是一组无序的元素.
未指定地图上的迭代顺序,并且不保证从一次迭代到下一次迭代是相同的.
你不能.没有订购Go地图.Go map是哈希映射(哈希表).
要按顺序(或逆序)获取地图内容,请将地图内容读入切片并对其进行排序.
哈希表使用哈希函数来计算桶或槽阵列的索引,从中可以找到所需的值.
缺点
存储在散列表中的条目可以有效地枚举(每个条目的成本不变),但仅以某些伪随机顺序.因此,没有有效的方法来定位其键最靠近给定键的条目.按特定顺序列出所有n个条目通常需要单独的排序步骤,其成本与每个条目的log(n)成比例.