Golang中的同步工具sync.Map示例詳解
sync.Map
sync.Map是Golang標(biāo)準(zhǔn)庫(kù)提供的并發(fā)安全的Map類型,可以在多個(gè)goroutine并發(fā)讀寫Map的場(chǎng)景下不需要加鎖。sync.Map最典型的兩個(gè)使用場(chǎng)景:
- 寫少讀多的場(chǎng)景,特別是只寫一次,讀取多次的場(chǎng)景,例如緩存;
- 當(dāng)多個(gè)程序讀取、寫入和修改的場(chǎng)景。
sync.Map 提供如下幾個(gè)方法:
- Store(key , value any):向Map中存儲(chǔ)鍵值對(duì)
- Load(key any):根據(jù)鍵獲取值
- Delete(key any):刪除鍵值對(duì)
- LoadAndDelete(key any):獲取并刪除鍵值對(duì)
- LoadOrStore(key, value any) :如果key已經(jīng)存在,返回對(duì)應(yīng)值,如果不存在,存儲(chǔ)鍵值對(duì)
- Range(f func(key, value any) bool):遍歷Map中的鍵值對(duì)
使用方法和示例
package main
import (
"fmt"
"sync"
)
func main() {
var m sync.Map
// 存儲(chǔ)鍵值對(duì)
m.Store("key", "value")
// 根據(jù)鍵獲取值
val, ok := m.Load("key")
if ok {
fmt.Println(val)
}
// 遍歷所有鍵值對(duì)
m.Range(func(k, v interface{}) bool {
fmt.Println("key:", k, ",value:", v)
return true
})
// 刪除鍵值對(duì)
m.Delete("key")
}小結(jié)
sync.Map是Golang中非常實(shí)用非常強(qiáng)大的同步工具,可用于實(shí)現(xiàn)并發(fā)安全的Map數(shù)據(jù)結(jié)構(gòu),在并發(fā)訪問的場(chǎng)景中可以提高程序的可靠性和性能。
到此這篇關(guān)于Golang中的同步工具sync.Map詳解的文章就介紹到這了,更多相關(guān)Golang sync.Map內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang實(shí)現(xiàn)頁(yè)面靜態(tài)化操作的示例代碼
這篇文章主要介紹了golang實(shí)現(xiàn)頁(yè)面靜態(tài)化操作的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
基于Golang開發(fā)一個(gè)輕量級(jí)登錄庫(kù)/框架
幾乎每個(gè)項(xiàng)目都會(huì)有登錄,退出等用戶功能,而登錄又不單僅僅是登錄,我們要考慮很多東西。所以本文就來(lái)用Golang開發(fā)一個(gè)輕量級(jí)登錄庫(kù)/框架吧2023-05-05

