golang map为啥不并发

互联网 19-12-14

内建map切忌开箱即用 (推荐学习:go)

Golang中,map是引用类型,如指针切片一样,通过下面的代码声明后指向的是nil。这点在golang官方文档中也说明了,所以千万别直接声明后就使用,开始可能经常会犯下面的错:

var m map[string]string m["result"] = "result"

上面的第一行代码并没有对map进行一个初始化,而却对其进行写入操作,就是对空指针的引用,这将会造成一个painc。

所以,得记得用make函数对其进行分配内存和初始化:

m := make(map[string]string) m["result"] = "result"

golang中的map并不是并发安全的

经常使用map,平时用着也很爽,但是突然某天流量上来了,程序不知不觉就挂了,还不清楚是怎么回事,明明以前用着好好的呀。

所以有些好习惯在刚开始就养成,比如断言检查,并发安全考虑等。

map纵然很好用,但也得谨慎。或许很多人还不知道,golang内建map其实并不是并发安全的。

或许你可以尝试下sync.Map

golang中的sync.Map是并发安全的,其实也就是sync包中golang自定义的一个名叫Map的结构体。结构体原型如下:

type Map struct {    mu Mutex    read atomic.Value // readOnly    dirty map[interface{}]*entry    misses int }

以上就是golang map为啥不并发的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: golang
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:emacs支持golang吗

相关资讯