欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go映射的使用

 更新時(shí)間:2023年11月20日 11:36:00   作者:hope_wisdom  
Go提供了另一個(gè)重要的數(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)是一種無序的鍵值對(duì)集合,使用關(guān)鍵字map來聲明,并使用鍵和值類型作為參數(shù)。它是一個(gè)用于存儲(chǔ)一系列無序的鍵值對(duì)的集合,基于鍵來存儲(chǔ)值,鍵就像索引一樣,指向與該鍵關(guān)聯(lián)的值。

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

聲明映射

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

var m map[keyType]valueType

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

var m map[string]int

初始化映射

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

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)建了一個(gè)空的映射,可以在后續(xù)的代碼中通過使用賦值操作來添加鍵值對(duì)。

package main

import "fmt"

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

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

操作映射

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

package main

import "fmt"

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

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

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

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

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將是對(duì)應(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時(shí),range會(huì)返回兩個(gè)值:鍵和對(duì)應(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang?開啟opencv圖形化編程

    golang?開啟opencv圖形化編程

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

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

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

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

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

    Go語言struct類型詳解

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

    使用Golang進(jìn)行比較版本號(hào)大小

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

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

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

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

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

    Go?time包AddDate使用解惑實(shí)例詳解

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

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

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

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

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

最新評(píng)論