Golang经典笔试题及答案(上篇)
执行结果:key=zhou,value=&{wang 22}
key=li,value=&{wang 22}
key=wang,value=&{wang 22}
发现value都是一样的,这是因为19行的&stu是指针,地址都保持不变,所以每个遍历都是值拷贝,所以实际上
m=%stu都是指向的是同一个地址,最终遍历后的值都是最后一个map的值,wang,22
应该改成
for i, _ := range stus {
stu=stus
m = &stu
}
以上代码是将stus遍历的每个值进行拷贝,拷贝完后每个地址的值都不一样。
页:
[1]