我是 Go 新手,现在我想从 map 中获取任意项目;这样做的惯用方法是什么?我只能想到这样的事情:
func get_some_key(m map[int]int) int {
for k := range m {
return k
}
return 0
}
我想要这样做的原因是我正在使用 map 来维护一组作业,并且使用 map 我可以获得待处理的作业或在 O(1) 中删除已完成的作业。我想这应该是一个常见的要求,但在 Go 中如何做到这一点并不明显。
最佳答案
可以讨论从哈希表中获取任意键是否是常见要求。其他语言映射实现通常缺少此功能(例如。Dictionary in C#)
但是,您的解决方案可能是最快的解决方案,但您将得到一个您无法控制的伪随机算法。虽然当前实现使用伪随机算法,但 Go Specification不能保证它实际上是随机的,只是不能保证它是可预测的:
The iteration order over maps is not specified and is not guaranteed to be the same from one iteration to the next.
如果您想要更多地控制随机化,您还可以使用您选择的随机化(math/rand
或crypto/rand
对于更极端的情况)来获取存储在索引中的值,随机选择,在 slice 中。
关于dictionary - 从 map 中获取任意键/项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23482786/