如何反转golang映射中的项目顺序?

时间:2018-07-08 04:56:55

标签: go

我是golang的新手,我想在这样的地图中反转成对出现的顺序,以便最后一对出现在第一位:

mapA := map[string]int {
    "cat": 5,
    "dog": 2,
    "fish": 3 ,
}


fmt.Println(mapA)


map[cat:5 dog:2 fish:3]

生成的地图应类似于:

map[fish:3 dog:2 cat:5]

它可以是具有相同项目但顺序颠倒的新mapB。

我该如何实现?

1 个答案:

答案 0 :(得分:6)

  

The Go Programming Language Specification

     

Map types

     

地图是无序的元素组。

     

For statements

     

未指定地图的迭代顺序,因此无法保证   从一个迭代到下一个迭代都是相同的。


不能。未订购Go地图。 Go映射是一个哈希映射(哈希表)。

要按顺序(或相反的顺序)获取地图内容,请将地图内容读取为片并将其排序。


  

Hash table - Wikipedia

     

哈希表使用哈希函数将索引计算为   可以从中找到所需值的存储桶或插槽。

     

缺点

     

可以高效地枚举存储在哈希表中的条目(在   每次登录费用不变),但仅按某些伪随机顺序进行。   因此,没有有效的方法来找到其关键字是   最接近给定键。以特定顺序列出所有n个条目   通常需要一个单独的分类步骤,其成本是成比例的   记录每个条目的n个。