登录
首页 >  Golang >  Go问答

向循环中的范围添加地图内容

来源:stackoverflow

时间:2024-03-11 11:21:30 158浏览 收藏

本篇文章给大家分享《向循环中的范围添加地图内容》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

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 作为循环后地图的长度。 视频在这里,游乐场在这里。

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


解决方案


Spec: For statements:

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

规范规定,如果您将条目添加到您正在范围内的地图,则您添加的元素可能会或可能不会被循环访问,而且,访问的元素甚至不是确定性的(再次执行时可能会改变) )。

您正在修改正在迭代的地图。这就是原因。

理论要掌握,实操不能落!以上关于《向循环中的范围添加地图内容》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>