这个题目有点怪

delaywu · · 1695 次点击
`for _, stu := range stus { m[stu.name] = &stu }`</br> 三次循环复用的是同一个stu变量,你对这个stu取指针并赋值到m中,就导致m中三个key映射的都是stu。</br> 在最后一次循环中,stu被赋值为“博客”,所以最后三个key打印出来的都是“博客”。</br> 要解决这个问题,最简单而且不影响原有逻辑的方法是每次循环都定义一个局部变量:</br> `for _, stu := range stus { stu := stu m[stu.name] = stu }`</br> 或者通过下标访问切片:</br> `for i := range stus { m[stus[i].name] = stus[i] }`
#12
更多评论
先把代码格式化一下
#1
delaywu
Golang在路上...
<a href="/user/jthmath" title="@jthmath">@jthmath</a> 麻烦帮我看看
#2