嗨,我是新来的,正在尝试弄清楚地图是如何工作的。我编写了一个小测试程序,但似乎无法运行。我做错了什么?
package main
import (
"fmt"
)
type Stats struct {
cnt int
category map[string]Events
}
type Events struct {
cnt int
event map[string]Event
}
type Event struct {
value int64
}
func main() {
stats := new(Stats)
stats.cnt = 33
stats.category["aa"].cnt = 66
stats.category["aa"].event["bb"].value = 99
fmt.Println(stats.cnt, stats.category["aa"].event["bb"].value)
}
原文由 Daniel Huckson 发布,翻译遵循 CC BY-SA 4.0 许可协议
代码有几个问题:
Map 需要使用 make 函数进行初始化。目前他们是零
map 的返回值是不可寻址的,这是因为如果 map 正在增长,它需要重新定位,这将导致内存地址发生变化。因此,我们需要显式地从 map 中提取值到一个变量,更新它并重新分配它。
使用指针
我已经更新了解决方案,以显示更新后的返回值和分配给它的指针。
http://play.golang.org/p/lv50AONXyU