成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

GO之MAP的使用-創(chuàng)新互聯(lián)

哈希表是計(jì)算機(jī)科學(xué)中最重要的數(shù)據(jù)結(jié)構(gòu)之一。許多哈希表的實(shí)現(xiàn)有著千差萬(wàn)別的特性,但是總體上他們都提供了快速查詢(xún),添加和刪除功能。go語(yǔ)言提供了內(nèi)置數(shù)據(jù)類(lèi)型map。

韶山ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!

    映射是一種內(nèi)置的數(shù)據(jù)結(jié)構(gòu),用來(lái)保存鍵值對(duì)的無(wú)序集合。

    map的聲明格式如下:

      1、map[KeyType] ValueType

        KeyType類(lèi)型必須是可以比較的,而ValueType可以是任意類(lèi)型,甚至是另一個(gè)map

        2、以下這個(gè)m是一個(gè)鍵值為string,值為int的哈希表:var m map[string]int

        3、哈希表類(lèi)型是引用類(lèi)型,像指針或者切片m指向的值是nil;它沒(méi)有指向一個(gè)初始化了的哈希表。一個(gè)nil哈希表在讀的時(shí)候,像一個(gè)空的哈希表,但是嘗試向m中寫(xiě)數(shù)據(jù)會(huì)引發(fā)一個(gè)運(yùn)行時(shí)panic,所以別那樣做。 使用內(nèi)置函數(shù)make初始化一個(gè)哈希表

        m = make(map[string]int)//make函數(shù)申請(qǐng)并初始化了一個(gè)哈希表的數(shù)據(jù)結(jié)構(gòu)并且返回一個(gè)指向這個(gè)初始化好了的哈希表

映射的創(chuàng)建:

        1、make(map[KeyType]ValueType,initialCapacity)

        2、make(map[KeyType]ValueType)

        3、map[KeyType]ValueType{}

        4、map[KeyType]ValueType{key1:value1,key2:value2.....,keyN:valueN}

egg:

package main
import "fmt"
func main() {
    map1 := make(map[string]string, 5)
    map2 := make(map[string]string)
    map3 := map[string]string{}
    map4 := map[string]string{"a": "1", "b": "2", "c": "3"}
    fmt.Println(map1, map2, map3, map4)
}

映射的填充和遍歷

package main
import "fmt"
func main() {
    map1 := make(map[string]string)
    map1["a"] = "1"
    map1["b"] = "2"
    map1["c"] = "3"
    fmt.Println(map1)
    for key, value := range map1 {
        fmt.Printf("%s--->%s\n", key, value)
    }
}

##map是對(duì)key-value的遍歷,直接操作value是值得拷貝,只有對(duì)key的操作才是修改value

package main
import "fmt"
func main() {
    sm := make([]map[int]string, 5)
    for _, value := range sm {
        value = make(map[int]string, 1)
        value[1] = "OK"
        fmt.Println(value)
    }
    fmt.Println(sm)
}

C:/Users/cherry/go/src/test/test.exe  [C:/Users/cherry/go/src/test]
map[1:OK]
map[1:OK]
map[1:OK]
map[1:OK]
map[1:OK]
[map[] map[] map[] map[] map[]]
值得拷貝操作
####
package main
import "fmt"
func main() {
    sm := make([]map[int]string, 5)
    for i := range sm {
        sm[i] = make(map[int]string, 1)
        sm[i][1] = "OK"
        fmt.Println(sm[i])
    }
    fmt.Println(sm)
}

映射的查找、修改和刪除

package main
import "fmt"
func main() {
    map1 := map[string]string{"a": "1", "b": "2", "c": "3"}
    val, exist := map1["a"]  //
    val2, exist2 := map1["d"]
    fmt.Printf("%v,%v\n", exist, val)
    fmt.Printf("%v,%v\n", exist2, val2)
    map1["a"] = "9" //修改
    fmt.Printf("%v\n", map1)
    delete(map1, "b")\\刪除
    fmt.Printf("%v\n", map1)
}

map指定key取對(duì)應(yīng)的value時(shí),可以指定返回兩個(gè)值,第一個(gè)是對(duì)應(yīng)的value,第二個(gè)是一個(gè)bool,表示是否有值。如上,"a"肯定有值,"b"肯定沒(méi)值,修改映射和添加映射的操作沒(méi)什么區(qū)別,若指定的鍵不存在則創(chuàng)建,否則,修改之

MAP并發(fā):

哈希表在有并發(fā)的場(chǎng)景并不安全:同時(shí)讀寫(xiě)一個(gè)哈希表的后果是不確定的。如果你需要使用goroutines同時(shí)對(duì)一個(gè)哈希表做讀寫(xiě),對(duì)哈希表的訪問(wèn)需要通過(guò)某種同步機(jī)制做協(xié)調(diào)。一個(gè)常用的方法是是使用 sync.RWMutex。

這個(gè)語(yǔ)句生命了一個(gè)counter變量,這是一個(gè)包含了一個(gè)map和sync.RWMutex的匿名結(jié)構(gòu)體

##當(dāng)map多層嵌套的時(shí)候,需要對(duì)它進(jìn)行初始化操作,如:egg:

package main
import "fmt"
func main() {
    var m map[int]map[int]string
    m = make(map[int]map[int]string) //這里其實(shí)只對(duì)外層的map做了初始化操作
    a, ok := m[2][1]
    fmt.Println(a, ok)
    if !ok {
        m[2] = make(map[int]string)
    }
    m[2][1] = "Good1"
    a, ok = m[2][1]
    fmt.Println(a, ok)
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

分享名稱(chēng):GO之MAP的使用-創(chuàng)新互聯(lián)
URL分享:http://jinyejixie.com/article40/ccpeeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、虛擬主機(jī)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
托克逊县| 玉林市| 湄潭县| 祥云县| 仙桃市| 探索| 新沂市| 通榆县| 德令哈市| 河南省| 建水县| 阿图什市| 金坛市| 项城市| 新乡市| 长宁县| 陆河县| 乐陵市| 南昌县| 曲周县| 沧州市| 固原市| 湘乡市| 右玉县| 合川市| 光山县| 清徐县| 久治县| 垦利县| 商南县| 胶南市| 波密县| 孙吴县| 凤冈县| 和平区| 分宜县| 沅陵县| 施秉县| 久治县| 古浪县| 寿阳县|