go面试题:为什么v.name都是博客?

作者站长头像
站长
· 阅读数 11
type student struct {
    name string
    age  int
}

func main() {
    m := make(map[string]*student)
    stus := []student{
        {name: "pprof.cn", age: 18},
        {name: "测试", age: 23},
        {name: "博客", age: 28},
    }

    for _, stu := range stus {
        m[stu.name] = &stu
    }
    for k, v := range m {
        fmt.Println(k, "=>", v.name)
    }
}
回复
1个回答
avatar
test
2024-07-10

https://draveness.me/golang/d...__

for range 的 k,v 是固定的内存地址,只是循环的时候不断给它赋值,如果使用 &stu 那就是指向同一块内存地址。所以就会在最后一次赋值完成后,都是博客

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容