真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

golang中map的作用-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)是專業(yè)的市北網(wǎng)站建設公司,市北接單;提供成都網(wǎng)站設計、成都網(wǎng)站建設、外貿(mào)網(wǎng)站建設,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行市北網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

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

內(nèi)建map切忌開箱即用

Golang中,map是引用類型,如指針切片一樣,通過下面的代碼聲明后指向的是nil。這點在golang官方文檔中也說明了,所以千萬別直接聲明后就使用,開始可能經(jīng)常會犯下面的錯:

var m map[string]string
m["result"] = "result"

上面的第一行代碼并沒有對map進行一個初始化,而卻對其進行寫入操作,就是對空指針的引用,這將會造成一個painc。

所以,得記得用make函數(shù)對其進行分配內(nèi)存和初始化:

m := make(map[string]string)
m["result"] = "result"

golang中的map并不是并發(fā)安全的

經(jīng)常使用map,平時用著也很爽,但是突然某天流量上來了,程序不知不覺就掛了,還不清楚是怎么回事,明明以前用著好好的呀。所以有些好習慣在剛開始就養(yǎng)成,比如斷言檢查,并發(fā)安全考慮等。

或許你可以嘗試下sync.Map

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

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

可以看見有 Mutex,很顯然也是用了鎖機制的,從而來保證了并發(fā)安全。該包中的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)

看完上述內(nèi)容,你們對golang中map的作用大概了解了嗎?如果想了解更多相關文章內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


本文名稱:golang中map的作用-創(chuàng)新互聯(lián)
轉載注明:http://weahome.cn/article/hhhid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部