golang map

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"

posted @ 2017-11-22 17:30  YYRise  阅读(254)  评论(0编辑  收藏  举报