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)}
错误示例刚刚上手,我们都会习惯性的向下面这样赋值 ,示例如下package mainimport "fmt"type person struct { name string age int sex string}func main() { //建立结构体map s := make(map[int]person) //给map赋值 s[1] = pe...