[go语言]初学者需要注意的问题-map

1.直接对map对象使用[]操作符获得的对象不能直接修改状态
package main
func main() {
type person struct {age int}
m := map[string]person{"steve":{10}}
m["steve"].age = 100  // 编译错误:cannot assign to m["steve"].age
}

2.通过查询map获得的对象是个拷贝,对此对象的修改不能影响原有对象的状态
package main
func main() {
type person struct {age int}
m := map[string]person {"steve":{10}}
p := m["steve"]
p.age = 100 // 没有改变map中对象的状态!
println(p.age)
println(m["steve"].age)
}
输出:
100
10
解决方法:
1)map中存储指针而不是结构体
package main
func main() {
type person struct {age int}
m := map[string]*person{"steve":{10}}
p := m["steve"]
p.age = 100
println(p.age)
println(m["steve"].age)
}
输出:
100
100
2)修改了对象状态以后重新加到map里
package main
func main() {
type person struct {age int}
m := map[string]person {"steve":{10}}
p := m["steve"]
p.age = 100
println(p.age)
m["steve"] = p
println(m["steve"].age)
}
输出:
100
100

本文来自:新浪博客

感谢作者:stevewang

查看原文:[go语言]初学者需要注意的问题-map

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。