GO·NOTE

一份 Go 开发工程师的学习笔记

0%

不能修改map中value为结构体的属性值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main

type Student struct {
Name string `json:"name"`
}

func main() {

m := map[string]Student{}
m["xmge"] = Student{Name: "xmge"}

// 以下语句编译不通过:cannot assign to struct field m["xmge"].Name in map
// 原因是 map 元素是无法取址的,也就是说你取到的m["xmge"]是复制品,不可直接在上面更改,而使用指针就可以避免这种情况
m["xmge"].Name = "xmge.new"

m2 := map[string]*Student{}
m2["xmge"] = &Student{Name: "xmge"}

// 编译可通过
m2["xmge"].Name = "xmge.new"

}