『Go 基础知识』正在自学golang,在指针这一个知识点遇到了点问题,求解惑。
package main
import “fmt”
type strudent struct {
name string
age int
}
func main() {
m := make(map[string]*strudent, 10)
stus := []strudent{
{name: "peter", age: 18},
{name: "lily", age: 25},
{name: "lucy", age: 20},
}
for _, stu := range stus {
fmt.Printf("%p\n", &stu)
m[stu.name] = &stu
}
for k, v := range m {
fmt.Println(k, "=>", v.name)
}
}
//: <> (对待提问越认真,就越容易得到答复。)
//: <> (对待提问越认真,就越容易得到答复。)
//: <> (对待提问越认真,就越容易得到答复。)
//: <> (重要的事情说三遍!)
1. 运行环境
//: cscci03049> go version
//: go version go1.13.8 linux/amd64
2. 问题描述?
搞不懂为什么在循环遍历的时候,访问到的是同一块内存地址
cscci03049> go run main.go
0xc00000c060
0xc00000c060
0xc00000c060
peter => lucy
lily => lucy
lucy => lucy
那不然呢,每次循环分配一次内存??forr 每次循环会重新赋值给 stu ,所以 stu的地址不会变,但这个地址存的数据会变。