package main
import"fmt"type person struct{
name string
age int
sex string}funcmain(){//建立结构体map
s :=make(map[int]person)//给map赋值
s[1]= person{"tony",20,"man"}
fmt.Println(s[1])//修改map里结构体的成员属性的值
s[1].name ="tom"
fmt.Println(s[1].name)}
但是这样一些就会报 main\main.go:17:12: cannot assign to struct field s[1].name in map 的错误
错误原因
x = y 这种赋值的方式,你必须知道 x的地址,然后才能把值 y 赋给 x。
但 go 中的 map 的 value 本身是不可寻址的,因为 map 的扩容的时候,可能要做 key/val pair迁移
value 本身地址是会改变的
不支持寻址的话又怎么能赋值呢
解决方法
package main
import"fmt"type person struct{
name string
age int
sex string}funcmain(){
s :=make(map[int]*person)
s[1]=&person{"tony",20,"man"}
fmt.Println(s[1])
s[1].name ="tom"
fmt.Println(s[1].name)}