【Golang map并发报错】panic: assignment to entry in nil map

这篇具有很好参考价值的文章主要介绍了【Golang map并发报错】panic: assignment to entry in nil map。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

go并发写map[string]interface{}数据的时候,报错:panic: assignment to entry in nil map

多个key同时操作一个map时,如:

test[key1] = 1

test[key2] = "a"

test[key3] = true

就会遇到并发nil值报错,什么test[key-xxx] = make()根本不行。

用异步sync.Map解决:

// map[string]interface{} 全局配置(自定义)参数。读写
var syncMapInterface sync.Map

// SetGlobalMapInterface 新增或更新
func SetGlobalMapInterface(key string, value interface{}) {
	syncMapInterface.Store(key, value)
}

// GetGlobalMapInterface 读取
func GetGlobalMapInterface(key string) interface{} {
	back, _ := syncMapInterface.Load(key)
	return back
}

// DelGlobalMapInterface 删除
func DelGlobalMapInterface(key string) interface{} {
	syncMapInterface.Delete(key)
	back, _ := syncMapInterface.Load(key)
	return back
}

Lock锁那个比较麻烦,不建议使用。推荐使用sync.Map。文章来源地址https://www.toymoban.com/news/detail-805929.html

到了这里,关于【Golang map并发报错】panic: assignment to entry in nil map的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Dockerfile: unable to find user xxx : no matching entries in passwd file解决方案

    在制作Docker镜像的过程中,完成软件安装等操作后,一般会切换为普通用户启动相应的服务,就需要用到 USER 指令。但有时候这个指令会报错: docker: Error response from daemon: unable to find user : no matching entries in passwd file. 如果遇到这个问题,可以在使用 USER 指令之前,先创建用户

    2024年02月09日
    浏览(60)
  • golang interface类型的nil

    golang中interface变量,底层两个对象来存,一个是type、一个是value,只有type、value都为nil时,interface变量才是nil 输出结果为: 可以看到interface 变量i,虽然值为nil,但类型是Student 如果想判断变量value是否为空,可以指定type

    2024年02月14日
    浏览(23)
  • golang常见导致panic的场景

    常见有数组越界和字符串越界 直接引用空指针结构体的字段会引发panic,但调用成员方法里如果没引用结构体的字段不会引发panic map未初始化,可读不可写。 map的value如果是结构体指针,使用时先判空。 向已经关闭的管道写会panic,读不会panic 多次调用close会导致panic 只有生

    2024年02月06日
    浏览(19)
  • Go 接口:nil接口为什么不等于nil?

    本文主要内容:深入了解接口类型的运行时表示层。 目录 Go 接口:nil接口为什么不等于nil? 一、Go 接口的地位 二、接口的静态特性与动态特性 2.1 接口的静态特性与动态特性介绍 2.2 “动静皆备”的特性的好处 三、nil error 值 != nil 四、接口类型变量的内部表示 第一种:nil 接

    2024年02月05日
    浏览(48)
  • Go 语言 nil 空值

    在 Go 语言中, nil 是一个预定义的标识符,用于表示某些类型的零值或空值。 nil 在 Go 语言中可以表示以下几种类型的零值或空值: 指针类型:表示一个指向空地址的指针,即指针不指向任何有效的内存地址。 接口类型:表示一个空接口,即接口没有关联任何值。 函数类型

    2024年02月11日
    浏览(29)
  • 100天精通Golang(基础入门篇)——第12天:深入解析Go语言中的集合(Map)及常用函数应用

    🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批

    2024年02月12日
    浏览(40)
  • Go 空切片与nil切片

    在 Go 语言中,空切片和 nil 切片是两种不同的概念。 空切片是一个长度和容量都为 0 的切片。你可以通过 make 函数或者切片字面量来创建一个空切片,例如 s := make([]int, 0) 或者 s := []int{}。 空切片不是 nil,即 s != nil。 空切片已经分配了内存空间,所以你可以直接向空切片中

    2024年02月20日
    浏览(31)
  • Go 空切片 VS nil切片

    在 Go 语言中,空切片和 nil 切片是两种不同的概念。 空切片是一个长度和容量都为 0 的切片。你可以通过 make 函数或者切片字面量来创建一个空切片,例如 s := make([]int, 0) 或者 s := []int{}。 空切片不是 nil,即 s != nil。 空切片已经分配了内存空间,所以你可以直接向空切片中

    2024年02月20日
    浏览(44)
  • Go语言中的空和nil

    Go语言中的空和nil 在 Go 语言中,\\\"空\\\"和\\\"nil\\\"是两个不同的概念,分别适用于不同的数据类型和用途。 在 Go 中,每种数据类型都有一个默认的零值,也被称为\\\"空\\\"值。这是在创建变量但未显式初始化时自动分配给变量的值。空值对于不同类型的变量来说是不同的,例如: 数值类

    2024年02月13日
    浏览(85)
  • go数据类型-空结构体、空接口、nil

    有经验的开发人员都知道,所有的空结构体是指向一个 zerobase的地址,而且大小为0 一般用来作结合map作为set 或者 在channel中 传递信号。 能看到当一个空结构体中,包含了其他类型的变量,就不指向 zerobase。 go中的接口都是隐式的,增加的封装的灵活性,也为阅读源码增加了

    2024年02月05日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包