go语言map使用时必须先初始化为非nil的map

/ 默认分类 / 没有评论 / 99浏览

我常用语言是c++,使用go语言的map的时候想当然的就声明一个map,然后直接往里面添加元素,类似下面:

   var m map[string]string
   m["test"] = "go"

发现这样有问题,报错如下:

panic: runtime error: assignment to entry in nil map

原来声明map只是声明了一个nil类型的map,这个map不能添加元素,必须初始化才行,类似下面:

   var m map[string]string
   m = make(map[string]string)
   m["test"] = "go"

这样用感觉有些麻烦,其实有一个更快捷的使用map方法,如下:

   m := make(map[string]string)
   m["test"]="go"