【问题标题】:Why is map traversal sequential? [closed]为什么地图遍历是顺序的? [关闭]
【发布时间】:2020-06-01 00:49:33
【问题描述】:

这不是乱序输出吗 问答

这是我的代码

var i=map[int]int{
   1:1,
   2:2,
   3:3,
}
for i2, i3 := range i {
       fmt.Println(i2, i3)
}

输出是

1 1
2 2
3 3

为什么?

【问题讨论】:

  • 这只是“伪随机”,并且插入序列 1:1、2:2、3:3 最终以原始顺序迭代(这可能仅适用于 Go 版本你正在运行)。尝试插入例如 1:1, 3:3, 2:2 代替,它不一定会按插入顺序进行迭代。
  • 非常感谢。我明白了
  • 1 2 31 2 3 的可能随机排序之一
  • 但是我用这组数据做了七八次实验,结果都是一样的。
  • @sexy_Robber:“我实验了七八次。”抛硬币 7 或 8 次总是正面并不意味着概率不是 0.5。对于小数字,使用伪随机数生成器 (PRNG),这并不奇怪。继续运行程序:play.golang.org/p/yjAOalbsOOI.

标签: go hash hashmap


【解决方案1】:

Go 地图不保证迭代顺序。事实上,顺序可能会从一个迭代到另一个迭代,插入的顺序和特定类型的值顺序无关。更多信息在这里:

https://blog.golang.org/go-maps-in-action

【讨论】:

  • 然而,当我这么说的时候,五六次重复的结果仍然没有改变。
  • 迭代顺序可能改变并不意味着它改变。
  • 我知道了,非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
  • 2016-10-22
  • 2016-10-16
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多