最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go映射的使用

 更新時間:2023年11月20日 11:36:00   作者:hope_wisdom  
Go提供了另一個重要的數(shù)據(jù)類型,稱為map,它將唯一鍵映射到值,本文主要介紹了Go映射的使用,包括聲明映射、初始化映射、操作映射等,感興趣的可以了解一下

概述

上一節(jié)的內(nèi)容中,我們介紹了Go的結(jié)構(gòu)體,包括:定義結(jié)構(gòu)體、聲明結(jié)構(gòu)體變量、使用結(jié)構(gòu)體、結(jié)構(gòu)體關(guān)聯(lián)函數(shù)、new、組合等。在本節(jié)中,我們將介紹Go的映射。Go語言中的映射(Map)是一種無序的鍵值對集合,使用關(guān)鍵字map來聲明,并使用鍵和值類型作為參數(shù)。它是一個用于存儲一系列無序的鍵值對的集合,基于鍵來存儲值,鍵就像索引一樣,指向與該鍵關(guān)聯(lián)的值。

映射被創(chuàng)建和初始化后,可以通過指定適當(dāng)類型的鍵并給這個鍵賦一個值來為映射賦值,每個鍵必須是唯一的。另外,映射是可變的,可以在已有的鍵值對基礎(chǔ)上添加新的鍵值對。Go語言中映射的實現(xiàn)使用哈希表,因此它的操作是非常快速的。然而,由于映射是無序的,即使使用同樣的順序保存鍵值對,每次迭代映射的時候,順序也有可能不一樣。

聲明映射

在Go語言中,映射的聲明使用map關(guān)鍵字,并指定鍵和值的類型。以下是聲明映射的語法:

var m map[keyType]valueType

其中,keyType表示鍵的類型,valueType表示值的類型。比如:要聲明一個將字符串作為鍵、整數(shù)作為值的映射,可以參考下面的示例代碼。

var m map[string]int

初始化映射

聲明映射時,可以直接添加初始鍵值對,可參考下面的示例代碼。

package main

import "fmt"

func main() {
    mapWebsite := map[string]int{
        "CSDN":  66,
        "GitHub": 88,
    }

    // 輸出:map[CSDN:66 GitHub:88]
    fmt.Println(mapWebsite)
}

當(dāng)然,也可以使用make函數(shù)來初始化映射。在下面的示例代碼中,我們通過make函數(shù)創(chuàng)建了一個空的映射,可以在后續(xù)的代碼中通過使用賦值操作來添加鍵值對。

package main

import "fmt"

func main() {
    mapWebsite := make(map[string]int)
    // 輸出:map[]
    fmt.Println(mapWebsite)
}

注意:映射是引用類型,使用make函數(shù)分配的是一個引用,后續(xù)對映射的修改會影響到原始的映射對象。

操作映射

聲明映射后,我們可以向映射中添加新的鍵值對,也可以訪問和修改映射中的值。具體用法可參考下面的示例代碼。

package main

import "fmt"

func main() {
    mapWebsite := make(map[string]int)
    // 添加新的鍵值對
    mapWebsite["CSDN"] = 66
    mapWebsite["GitHub"] = 88
    // 輸出:map[CSDN:66 GitHub:88]
    fmt.Println(mapWebsite)

    // 訪問鍵對應(yīng)的值,輸出:88
    fmt.Println(mapWebsite["GitHub"])

    mapWebsite["CSDN"] = 99
    // 修改鍵對應(yīng)的值,輸出:99
    fmt.Println(mapWebsite["CSDN"])
}

另外,我們可以使用len()函數(shù)獲取映射的長度,使用delete()函數(shù)刪除某個鍵值對。

package main

import "fmt"

func main() {
    mapWebsite := map[string]int{
        "CSDN":  66,
        "GitHub": 88,
    }

    // 輸出:2
    fmt.Println(len(mapWebsite))
    delete(mapWebsite, "GitHub")
    // 輸出:1
    fmt.Println(len(mapWebsite))
}

可以使用如下方式檢查鍵是否存在于映射中:value, ok := mapName[key]。其中,mapName是映射的變量名,key是要檢查的鍵。如果key存在于mapName中,那么value將是對應(yīng)的值,并且ok將置為true;否則,value將是零值,并且ok將置為false。

package main

import "fmt"

func main() {
    mapWebsite := map[string]int{
        "CSDN":  66,
        "GitHub": 88,
    }

    value, ok := mapWebsite["CSDN"]
    if ok {
        // 輸出:existed: 66
        fmt.Printf("existed: %d\n", value)
    } else {
        fmt.Println("not exist")
    }
}

要遍歷map,我們可以使用range關(guān)鍵字。當(dāng)遍歷map時,range會返回兩個值:鍵和對應(yīng)的值。具體用法可參考下面的示例代碼。

package main

import "fmt"

func main() {
    mapFruit := make(map[string]int)
    mapFruit["Apple"] = 66
    mapFruit["Banana"] = 88
    mapFruit["Orange"] = 99

    /* 遍歷map,輸出:
        Apple 66
        Banana 88
        Orange 99
    */
    for key, value := range mapFruit {
        fmt.Println(key, value)
    }
}

 到此這篇關(guān)于Go映射的使用的文章就介紹到這了,更多相關(guān)Go映射內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang 生成二維碼海報的實現(xiàn)代碼

    golang 生成二維碼海報的實現(xiàn)代碼

    這篇文章主要介紹了golang 生成二維碼海報的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 詳解Go語言中關(guān)于包導(dǎo)入必學(xué)的 8 個知識點

    詳解Go語言中關(guān)于包導(dǎo)入必學(xué)的 8 個知識點

    這篇文章主要介紹了詳解Go語言中關(guān)于包導(dǎo)入必學(xué)的 8 個知識點,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • go中string、int、float相互轉(zhuǎn)換方式

    go中string、int、float相互轉(zhuǎn)換方式

    這篇文章主要介紹了go中string、int、float相互轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • go語言LeetCode題解944刪列造序示例詳解

    go語言LeetCode題解944刪列造序示例詳解

    這篇文章主要為大家介紹了go語言LeetCode題解944刪列造序示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 使用IDEA配置GO語言的開發(fā)環(huán)境備忘錄

    使用IDEA配置GO語言的開發(fā)環(huán)境備忘錄

    最近在配置idea開發(fā)go語言時碰到很多問題,想著很多人都可能會遇到,所以下面這篇文章主要給大家介紹了關(guān)于使用IDEA配置GO語言的開發(fā)環(huán)境,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • go原子級內(nèi)存操作實現(xiàn)

    go原子級內(nèi)存操作實現(xiàn)

    原子級內(nèi)存操作是在多線程并發(fā)執(zhí)行時,能夠確保某個內(nèi)存操作是不可中斷的操作,本文主要介紹了go原子級內(nèi)存操作實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Go語言中new()和 make()的區(qū)別詳解

    Go語言中new()和 make()的區(qū)別詳解

    這篇文章主要介紹了Go語言中new()和 make()的區(qū)別詳解,本文講解了new 的主要特性、make 的主要特性,并對它們的區(qū)別做了總結(jié),需要的朋友可以參考下
    2014-10-10
  • 解析GOROOT、GOPATH、Go-Modules-三者的關(guān)系

    解析GOROOT、GOPATH、Go-Modules-三者的關(guān)系

    這篇文章主要介紹了解析GOROOT、GOPATH、Go-Modules-三者的關(guān)系,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Go語言標(biāo)準(zhǔn)庫flag的具體實現(xiàn)

    Go語言標(biāo)準(zhǔn)庫flag的具體實現(xiàn)

    Go語言的flag庫提供了一套簡單而強大的接口,用于解析命令行參數(shù),本文主要介紹了Go語言標(biāo)準(zhǔn)庫flag的具體實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • golang值類型轉(zhuǎn)換成[]uint8類型的操作

    golang值類型轉(zhuǎn)換成[]uint8類型的操作

    這篇文章主要介紹了golang值類型轉(zhuǎn)換成[]uint8類型的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05

最新評論

新乡市| 武功县| 巢湖市| 红河县| 星座| 乐昌市| 辽源市| 呈贡县| 陇西县| 濮阳市| 罗源县| 永州市| 碌曲县| 上高县| 西青区| 若羌县| 宿州市| 嘉兴市| 丹东市| 长武县| 海林市| 定西市| 潢川县| 临江市| 瑞昌市| 和龙市| 巫溪县| 临潭县| 尼勒克县| 石屏县| 彭水| 江永县| 越西县| 湘乡市| 宁津县| 砀山县| 昆山市| 湖南省| 安多县| 绵阳市| 东丽区|