我正在尝试创建一个结构,其中一个字段是一个地图。但是,我无法使用方法初始化它,然后使用其他方法插入值。它报告错误
恐慌:分配到nil地图中的条目
来自Python背景,我对我错过的内容感到困惑。
这是目标游乐场snippet
package main
type profile map[string]float64
type foobar struct {
foo profile
bar map[string]profile
}
func (fb foobar) Init() {
fb.foo = make(profile)
fb.bar = make(map[string]profile)
}
func (fb foobar) Set() {
fb.bar["foo1"] = make(profile)
}
func main() {
test := foobar{}
test.Init()
test.Set()
}
答案 0 :(得分:4)
Init
方法接收器(fb foobar)
是一个值。它应该是一个指针(fb *foobar)
。例如,
package main
type profile map[string]float64
type foobar struct {
foo profile
bar map[string]profile
}
func (fb *foobar) Init() {
fb.foo = make(profile)
fb.bar = make(map[string]profile)
}
func (fb foobar) Set() {
fb.bar["foo1"] = make(profile)
}
func main() {
test := foobar{}
test.Init()
test.Set()
}
参考: