"assignment to entry in nil map" 简单的接口分配不起作用

"assignment to entry in nil map" with simple interface assignment not working

我试着让自己熟悉 interface{} 围棋。我试过了:

         var  m  map[string]string
         m["time"] = "asdf"

并得到错误:

assignment to entry in nil map

我不确定为什么会收到错误消息。

地图m的值为nil。

make 函数分配并初始化哈希映射数据结构和 returns 指向它的映射值。

m := make(map[string]string)
m["time"] = "asdf"

阅读规格的 allocations with make 部分。

你需要像这样使用make(内置函数) make(map[string]string, 0) 初始化地图

https://golang.org/doc/effective_go.html#allocation_make https://golang.org/doc/effective_go.html#maps

当你像这样声明一个变量时:

var  m  map[string]string

您的 m 变量分配有默认值 map,即 nil,而不是空映射。这就是您收到该错误的原因,您正在尝试向 nil 映射添加一个值。

要初始化空地图,您可以尝试以下任一方法:

var m map[string]string = map[string]string{}
m := make(map[string]string)
m := map[string]string{}

Here 是一篇关于所有 Go 类型的默认值的文章。