【发布时间】:2015-09-18 05:09:26
【问题描述】:
我是 golang 新手,我正在尝试创建 map[string]interface{} 类型的地图。
但是当我尝试创建一个不存在的新键时,我得到一个运行时错误“panic: assignment to entry in nil map”。谁能告诉我我做错了什么?
去游乐场:https://play.golang.org/p/vIEE0T11yl
这是我的代码:
package main
func main() {
buffer := Buffer{}
buffer.AddRecord("myKey", 12345)
}
type Buffer struct {
records map[string][]interface{}
}
// ProcessRecord adds a message to the buffer.
func (buffer *Buffer) AddRecord(key string, record interface{}) {
_, ok := buffer.records[key]
if !ok {
buffer.records[key] = make([]interface{}, 0)
}
buffer.records[key] = append(buffer.records[key], record)
}
【问题讨论】:
-
当我问这个问题时,我不知道我是否错过了初始化,所以我不知道这在技术上是否是重复的。否则,我知道如何在结构中初始化映射,或者在本例中是接口切片的映射。