常见错误
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])
}
结果演示