登录
首页 >  Golang >  Go问答

为什么使用new()函数创建map并为其分配内存后会出现panic异常?

来源:stackoverflow

时间:2024-02-26 23:09:27 259浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《为什么使用new()函数创建map并为其分配内存后会出现panic异常?》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我的go版本是go1.13.6

运行此代码:

func main() {
  s := new(map[int]int)
  (*s)[1] = 4
  println((*s)[1])
}

控制台说:

panic: assignment to entry in nil map

所以,我尝试这个:

func main() {
  s := new(map[int]int)
  println(s == nil)
}

控制台显示 false

然后我尝试这个:

func main() {
  s := new(map[int]int)
  *s = map[int]int{}
  (*s)[1] = 4
  println((*s)[1])
}

控制台显示 4


解决方案


new 只是分配内存并将其归零,归零后的映射尚未准备好使用。

您应该使用 make

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《为什么使用new()函数创建map并为其分配内存后会出现panic异常?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>