map的声明与使用的坑

寅恪光潜
领域专家: 人工智能技术领域
2022-11-13 09:21:06

声明变量赋值,这个是平时常见的一个操作,如下:

var i int
i = 1
fmt.Println(i)//1

不过在map中这样做的话,如下:

var m map[string]int
m["a1"] = 1
m["a2"] = 2
fmt.Println(m)

会报错:panic: assignment to entry in nil map

 其实只需要知道map是属于引用类型,也可以知道没有分配内存,所以给nil map赋值就出错了
可以如下操作:

m := make(map[string]int)
m["a1"] = 1
m["a2"] = 2
fmt.Println(m)//map[a1:1 a2:2]

make来分配内存,或者另一种初始化的方法:

m := map[string]int{}
...全文
44 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

198

社区成员

发帖
与我相关
我的任务
社区描述
从零开始的小白到进阶成技术达人。 一起学习,一起进步。
golanggo1.19 个人社区 贵州省·贵阳市
社区管理员
  • 寅恪光潜
  • 网络豆
  • Somnus_小凯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

Go语言集各语言优势之大成,从基础到进阶

一起学习,一起进步,成为技术达人!

试试用AI创作助手写篇文章吧