91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang中map的作用

發布時間:2020-06-18 11:14:22 來源:億速云 閱讀:394 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關golang中map的作用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

map數據類型在很多語言中都有,是一個key,value形式的hash表,從而將key,value進行一一映射,進行快速查找、添加、刪除等操作。在Go語言中也不例外,提供了map數據結構類型。

內建map切忌開箱即用

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,平時用著也很爽,但是突然某天流量上來了,程序不知不覺就掛了,還不清楚是怎么回事,明明以前用著好好的呀。所以有些好習慣在剛開始就養成,比如斷言檢查,并發安全考慮等。

或許你可以嘗試下sync.Map

golang中的sync.Map是并發安全的,其實也就是sync包中golang自定義的一個名叫Map的結構體。結構體原型如下:

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

可以看見有 Mutex,很顯然也是用了鎖機制的,從而來保證了并發安全。該包中的Map提供了Store、Load、Delete、Range等操。并且sync包中的Map是開箱可用的,也即是聲明后就可以直接使用,如下:

var m sync.Map
m.Store("method", "eth_getBlockByHash")
value, ok := m.Load("method")
t.Logf("value=%v,ok=%v\n",value,ok)

看完上述內容,你們對golang中map的作用大概了解了嗎?如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

佳木斯市| 余姚市| 抚顺县| 谢通门县| 儋州市| 崇义县| 交城县| 平罗县| 大方县| 江都市| 施秉县| 万荣县| 乐至县| 桦南县| 崇州市| 威远县| 山阳县| 汉阴县| 奇台县| 临西县| 湾仔区| 英吉沙县| 河北省| 大厂| 拉萨市| 海丰县| 汕头市| 睢宁县| 朝阳市| 同德县| 分宜县| 孙吴县| 九寨沟县| 德兴市| 新竹市| 镇平县| 清苑县| 北流市| 永靖县| 仙居县| 自治县|