注意:range每次都会把当前值赋值到循环变量上,而不是直接使用原变量

type student struct {
	name string
	age  int
}
func main() {
	m := make(map[string]*student)
	stus := []student{
		{name: "小王子", age: 18},
		{name: "娜扎", age: 23},
		{name: "大王八", age: 9000},
	}
	for _, stu := range stus {
	//每次取的地址都是循环变量的地址(唯一)
		m[stu.name]=&stu
	}
	for k, v := range m {
		fmt.Println(k, "=>", v.name)
	}
}


修改后:

type student struct {
	name string
	age  int
}
func main() {
	m := make(map[string]*student)
	stus := []student{
		{name: "小王子", age: 18},
		{name: "娜扎", age: 23},
		{name: "大王八", age: 9000},
	}
	for i:=0;i<len(stus) ;i++ {
		m[stus[i].name] = &stus[i]
	}
	for k, v := range m {
		fmt.Println(k, "=>", v.name)
	}
}