如何反转golang地图中的项目顺序?

Bab*_*abr -1 go

我是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.

我怎样才能做到这一点?

pet*_*rSO 6

Go编程语言规范

地图类型

地图是一组无序的元素.

对于陈述

未指定地图上的迭代顺序,并且不保证从一次迭代到下一次迭代是相同的.


你不能.没有订购Go地图.Go map是哈希映射(哈希表).

要按顺序(或逆序)获取地图内容,请将地图内容读入切片并对其进行排序.


哈希表 - 维基百科

哈希表使用哈希函数来计算桶或槽阵列的索引,从中可以找到所需的值.

缺点

存储在散列表中的条目可以有效地枚举(每个条目的成本不变),但仅以某些伪随机顺序.因此,没有有效的方法来定位其键最靠近给定键的条目.按特定顺序列出所有n个条目通常需要单独的排序步骤,其成本与每个条目的log(n)成比例.

  • @Babr地图是无序的.创建新地图将导致另一个无序地图. (3认同)