是否可以对地图进行真实排序?

时间:2019-11-08 05:36:17

标签: sorting go maps

我知道Go的创建者决定将地图的密钥随机化,以使人们不会承担他们的命令。我想这可能现在已经改变了,但是我还没有看到任何相关的文档。

有一个对Linux日记功能的调用,如下所示:

 journal.Send(message string, priority Priority, vars map[string]string) error

(来自https://github.com/coreos/go-systemd

最好以已知和受控的顺序发送var,而不是随机发送,但是我看不到如果您不能真正地对地图进行排序,那么我不可能看到-我看到的所有示例都将键排序为数组,然后使用该数组作为映射键的排序索引进行迭代。

除了重写journal.Send()例程以外,还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

您需要使用emirpasic/gods之类的第三方库,该库可以实现:

  • TreeMap:基于红黑树的地图。键是相对于比较器排序的。
  • Linked Hashmap:保留插入顺序的地图。它由哈希表支持以存储值,而双链表则支持存储排序。

但是仅Map会保留随机键顺序。