首页 > 解决方案 > 真的可以对地图进行排序吗?

问题描述

我知道 Go 的创建者决定随机化地图的键,这样人们就不会假设他们的顺序。我想现在可能已经改变了,但我还没有看到任何关于这种情况的文档。

对 Linux 日志函数的调用如下:

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

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

以已知和受控的顺序而不是随机发送变量会很好,但如果你不能真正对地图进行排序,我看不出这是怎么可能的——我见过的所有示例都将键排序到一个数组中,然后使用数组作为映射键的排序索引进行迭代。

journal.Send()除了重写例程之外,有没有人有任何想法?

标签: sortinggomaps

解决方案


您将需要使用像这样的第三方库emirpasic/gods,它确实实现了:

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

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


推荐阅读