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)}