Go语言之Map非并发安全

一、问题描述:

一次使用Go map的过程中,发现一个现象,map里面的元素是数据结构的话,该元素的属性不能直接赋值。

会提示编译错误:

./prog.go:11:15: cannot assign to struct field testMap[1].x in map

例子如下:

640?wx_fmt=png

编译错误:./prog.go:11:15: cannot assign to struct field testMap[1].x in map

 

二、原因:

Go 里面的map不是并发安全的,导致了这个情况的出现,这与map在Go中的底层实现息息相关。(备注:map的实现后续会补充。)

三、解决方法:

比较简单的解决方法是下面这种,找个临时变量替换一下,绕过它即可,不过代码读起来有些奇怪,但是它确实工作了。

640?wx_fmt=png

output:test X: map[1:{5}]

参考资料:

proposal: spec: cannot assign to a field of a map element


灰子作于二零一九年五月三十日。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值