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的输出都是正常的,也就是确实遍历到了数组相应位置
共有 0 条评论