常见错误

type person struct {
   name string
   city string
   age  int
}

var personMap = make(map[int]person)

p5 := person{
   name: "小王子",
   city: "北京",
   age:  18,
}
p1 := person{
   "wang",
   "hunan",
   12,
}

personMap[p5.age] = p5
personMap[p1.age] = p1

// 修改

//错误示范   常见错误  不能直接修改map 结构体中的值
personMap[p1.age].name = "张三"

正确示范

package main

import (
    "fmt"
)

type person struct {
   name string
   city string
   age  int
}

//go 中的 map 的 value 本身是不可寻址的,因为 map 的扩容的时候,可能要做 key/val pair迁移


func main() {
 
	var personMap = make(map[int]*person)
 
	p5 := person{
		name: "小王子",
		city: "北京",
		age:  18,
	}
	p1 := person{
		"wang",
		"hunan",
		12,
	}
 
	personMap[p5.age] = &p5
	personMap[p1.age] = &p1
    
    fmt.Println(*personMap[p1.age])
    fmt.Println(*personMap[p5.age])
    personMap[p5.age].name = "小陈"
 
	fmt.Println(*personMap[18])
	fmt.Println(*personMap[p1.age])

}

结果演示