"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 类型的默认值的文章。
我试着让自己熟悉 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 类型的默认值的文章。