golang for range遍历并赋值给字典后出现所有值相同的问题

for range遍历并赋值给字典后出现所有值相同的问题
先看这段(非常经典的)错误示例:(为了方便用json包打印输出结构体,我使用了大写字母开头的导出字段)
m := make(map[string]*student)
stus := []student{
{Name: "名字1", Age: 1},
{Name: "名字2", Age: 2},
{Name: "名字3", Age: 3},
}
for _, stu := range stus {
m[stu.Name] = &stu
}
for k, v := range m {
fmt.Println(k, ":", v.Name)
}

输出结果:
名字3 : 名字3
名字1 : 名字3
名字2 : 名字3

如果在循环中打印stu,会发现每次遍历时stu的输出都是正常的,也就是确实遍历到了数组相应位置

golang for range遍历并赋值给字典后出现所有值相同的问题最先出现在Python成神之路

版权声明:
作者:Mr李
链接:https://www.techfm.club/p/9994.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>