亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將標準 Golang Map 轉換為 Sync.Map 以避免競爭條件

將標準 Golang Map 轉換為 Sync.Map 以避免競爭條件

Go
白板的微信 2023-08-14 14:45:09
我有以下代碼行:var a_map = make(map[string] []int)我的部分代碼使用 a_map 變量,偶爾會拋出以下錯誤:fatal error: concurrent map read and map write為了嘗試創建一種更強大的解決方案(沒有此類錯誤的解決方案),我想使用sync.Map而不是通用地圖。我這樣做的靈感來自于這個堆棧溢出問題提供的唯一答案。但是,我不清楚這樣做的正確語法。在我的第一次嘗試中,我使用了以下代碼行: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
查看完整描述

1 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

sync.Map不是 Go?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

--?https://play.golang.org/p/7rbEG_x0mrC

根據并發源,您可能需要每個鍵下的 []int 值進行類似的同步,但sync.Map 不會為您提供這種同步。sync.Map 僅提供每個鍵的加載/存儲同步。


查看完整回答
反對 回復 2023-08-14
  • 1 回答
  • 0 關注
  • 268 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號