Go &引用;分配到“无地图”中的条目;简单的接口分配不起作用

Go &引用;分配到“无地图”中的条目;简单的接口分配不起作用,go,interface,Go,Interface,我试图让自己熟悉围棋中的接口{}。我试过: var m map[string]string m["time"] = "asdf" 和获取错误: 分配到nil映射中的条目 我不确定为什么会出现错误。map m的值为零 make函数分配并初始化哈希映射数据结构,并返回指向该结构的映射值 m := make(map[string]string) m["time"] = "asdf"

我试图让自己熟悉围棋中的
接口{}
。我试过:

         var  m  map[string]string
         m["time"] = "asdf"
和获取错误:

分配到nil映射中的条目


我不确定为什么会出现错误。

map m的值为零

make函数分配并初始化哈希映射数据结构,并返回指向该结构的映射值

m := make(map[string]string)
m["time"] = "asdf"
请阅读规格部分。

您需要使用make(内置功能),如
make(映射[string]string,0)
初始化映射


当您声明这样的变量时:

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{}

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

1。您的错误意味着您正试图分配给nil映射
m
是一个零映射,因为您尚未为其指定任何值。谷歌搜索这个错误,你会发现无数关于修复的解释。2.您的代码或问题中没有接口,因此标题没有意义。如果声明变量时未向其添加值,则该变量具有默认值。在您的情况下,map的默认值是nil。在所有Go类型的默认值上查看此链接。m:=map[string]string{}