亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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?開啟opencv圖形化編程

    golang?開啟opencv圖形化編程

    這篇文章主要為大家介紹了golang?開啟opencv圖形化編程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Golang RSA生成密鑰、加密、解密、簽名與驗簽的實現(xiàn)

    Golang RSA生成密鑰、加密、解密、簽名與驗簽的實現(xiàn)

    RSA 是最常用的非對稱加密算法,本文主要介紹了Golang RSA生成密鑰、加密、解密、簽名與驗簽的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Go實現(xiàn)mongodb增刪改查工具類的代碼示例

    Go實現(xiàn)mongodb增刪改查工具類的代碼示例

    這篇文章主要給大家介紹了關(guān)于Go實現(xiàn)mongodb增刪改查工具類的相關(guān)資料,MongoDB是一個NoSQL數(shù)據(jù)庫,它提供了靈活的文檔存儲模型以及強大的查詢和操作功能,需要的朋友可以參考下
    2023-10-10
  • Go語言struct類型詳解

    Go語言struct類型詳解

    這篇文章主要介紹了Go語言struct類型詳解,struct是一種數(shù)據(jù)類型,可以用來定義自己想的數(shù)據(jù)類型,需要的朋友可以參考下
    2014-10-10
  • 使用Golang進行比較版本號大小

    使用Golang進行比較版本號大小

    在日常開發(fā)中,比較版本號大小的情況是經(jīng)常遇到的,這篇文章主要為大家詳細介紹了如何使用Golang進行比較版本號大小,需要的小伙伴可以參考下
    2024-01-01
  • Golang性能提升利器之SectionReader的用法詳解

    Golang性能提升利器之SectionReader的用法詳解

    本文將介紹 Go 語言中的 SectionReader,包括 SectionReader的基本使用方法、實現(xiàn)原理、使用注意事項,感興趣的小伙伴可以了解一下
    2023-07-07
  • Go Resiliency庫中timeout實現(xiàn)原理及源碼解析

    Go Resiliency庫中timeout實現(xiàn)原理及源碼解析

    Go-Resiliency庫中的timeout是一種基于協(xié)程的超時機制,通過創(chuàng)建協(xié)程來執(zhí)行任務(wù)并設(shè)置超時時間,若任務(wù)執(zhí)行時間超時則中止協(xié)程并返回錯誤,需要詳細了解可以參考下文
    2023-05-05
  • Go?time包AddDate使用解惑實例詳解

    Go?time包AddDate使用解惑實例詳解

    這篇文章主要為大家介紹了Go?time包AddDate使用解惑實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 詳解go-zero是如何做路由管理的

    詳解go-zero是如何做路由管理的

    go-zero 是一個微服務(wù)框架,包含了 web 和 rpc 兩大部分,而對于 web 框架來說,路由管理是必不可少的一部分,那么本文就來探討一下 go-zero 的路由管理是怎么做的吧
    2023-08-08
  • Go語言通過http抓取網(wǎng)頁的方法

    Go語言通過http抓取網(wǎng)頁的方法

    這篇文章主要介紹了Go語言通過http抓取網(wǎng)頁的方法,實例分析了Go語言通過http操作頁面的技巧,需要的朋友可以參考下
    2015-03-03

最新評論