我有以下代码行:
var a_map = make(map[string] []int)
我的代码的一部分,利用a_map变量有时会引发以下错误:
fatal error: concurrent map read and map write
为了创建一个更强大的解决方案,使之摆脱这种错误,我想使用sync.Map而不是通用映射。提供给此堆栈溢出question的唯一答案启发了我。但是,我不清楚这样做的正确语法。
我第一次尝试使用以下代码行:
var a_map = make(sync.Map[string] []int)
导致以下错误:
...syntax error: unexpected ], expecting expression
然后我尝试:
sync_map := new(sync.Map)
var a_map = make(sync_map[string] []int)
导致相同错误的原因:
...syntax error: unexpected ], expecting expression
sync.Map
不是Go sync.Map
,因此不能将map
语法与其一起使用。相反,它是a_map["key"]
,其中包含提供常规映射操作的方法。使用它的语法是:
struct
-var m sync.Map
m.Store("example", []int{1, 2, 3})
fmt.Println(m.Load("example")) // [1 2 3] true
取决于并发源,您可能需要在每个键下对[] int值进行类似的同步,而sync.Map不会给您同步。 sync.Map仅提供每个键的加载/存储同步。如果需要,请发表评论,我们会尽力帮助您。