小编典典

如何在范围循环中添加到地图

go

package main

import (
    "fmt"
)

func main() {
    m := make(map[int]int, 4)
    m[1] = 0
    m[2] = 0
    for k, _ := range m {
        i := 10 + k
        m[i] = 0
    }
    fmt.Println(m)
    fmt.Println("len:", len(m))
}

这段代码返回:8或10或6作为循环后映射的长度。视频在这里游戏
在这里

我看到新添加的元素进入范围,但无法解释为什么此循环随机停止吗?


阅读 218

收藏
2020-07-02

共1个答案

小编典典

规格:对于声明:

未指定地图的迭代顺序,并且不能保证每次迭代之间都相同。如果在迭代过程中删除了尚未到达的映射条目,则不会生成相应的迭代值。
如果在迭代过程中创建了映射条目,则该条目可能在迭代过程中产生或可以被跳过。
对于创建的每个条目以及从一个迭代到下一个迭代,选择可能有所不同。如果映射为nil,则迭代次数为0。

规范指出,如果您在地图上添加条目,则循环可能会或可能不会访问您添加的元素,此外,被访问的元素甚至不确定,也无法确定(再次执行时可能会更改)。

2020-07-02