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。
上一篇:Go 企业级gRPC原理