func main() {
m := map[string]struct {
Name string
Age int
}{
"wss": {"wss", 24},
}
m["wss"].Age = 10 // Error: cannot assign to struct field m["wss"].Age in map
fmt.Println(m["wss"])
}
map中value的地址在扩容时有可能会发生变化。 当value值为struct的时候,不能通过.来操作结构体的值。
解决方式:
func main() {
m := map[string]*struct {
Name string
Age int
}{
"wss": {"wss", 24},
}
m["wss"].Age = 10
fmt.Println(m["wss"])
}
// Output:
&{wss 10}
ps: 使用方法来修改结构体中的值也是行不通的。不能获取到value的地址。
m[key]++ 相当于 m[key] = m[key] + 1, 操作是合法的。