type user struct{ name string }
m := map[int]user{ 1: {"user1"}, }
1、从map中取回的是一个value临时复制品,对其成员修改是没有任何意义的
2、当 map 因扩张而重新哈希时,各键值项存储位置都会发生改变。 因此,map 被设计成 not addressable。
类似 m[1].name = "user2" 这种期望透过原 value 指针修改成员的行为会被禁止。painc: cannot assign to struct field m[1].name in map
3、修改:
(1)创建新值
tmp := m[1]
tmp.name = "user2"
m[1] = tmp
(2) map中value是指针,通过指针修改
m := map[int]*user{ 1: &user{"user1"}}
m[1].name = "user2"