溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Go語言的map

發布時間:2021-11-17 14:22:26 來源:億速云 閱讀:108 作者:iii 欄目:開發技術

這篇文章主要講解了“怎么使用Go語言的map”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么使用Go語言的map”吧!

    語法

    聲明和初始化

    配合make使用,否則是nil

    var map[KeyType]ValueType
    //KeyType:表示鍵的類型
    //ValueType:表示鍵對應的值的類型
    make(map[KeyType]ValueType, [cap])
    //cap表示map的容量,該參數雖然不是必須的,但是我們應該在初始化map的時候就為其指定一個合適的容量
    //當你的容量超過時會自動擴充

    例子:

    //1.聲明
    var name1 map[int]string   //key是int,value是string
    var name2 map[string]string  //key是string,value是string
    //字面量
    names3:=map[int]string{0:"張三",1:"李四"}
    //2.分配內存
    name1 = make(map[int]string, 2)         //2:map的容量,當你的容量超過時會自動擴充
    name2 = make(map[string]string, 2)
    //3.賦值
    //3.1 通過KeyType賦值
    name1[0]="張三"   //key:0   value:張三
    name1[1]="李四"   //key:1   value:李四
    name1[2]="王五"   //key:2   value:王五    //已經超過了分配的的容量,會自動擴充
    name2["A"]="張三"
    name2["B"]="李四"

    讀取

    根據KeyType來讀取

    如果keyType存在,就返回那個值,如果不存在,返回類型默認值值

    fmt.Println(name1[0])
    fmt.Println(name2["B"])

    測試map中key值是否存在

    通過KeyType來取值時,會返回兩個值,一個是vlue,另一個是是否存在的bool

    if value, ok := name1[5]; ok {
    	fmt.Println("存在這個值",value)
    } else {
    	fmt.Println("不存在這個值", value)
    }

    刪除

    delete(map[int]string,[KeyType])

    例子

    delete(name1 , 1)

    遍歷

    range

    例子:

    for key,value:=range name1 {
    	fmt.Printf("key=%d,value=%s\n",key,value)
    }
    for key,value:=range name2 {
    	fmt.Printf("key=%s,value=%s\n",key,value)
    }

    總結

    1. map必須借助make分配內存空間,否則是nil

    2. 字面量初始化必修保證key是唯一的,否則error

    3. map傳遞的是引用,就是說形參會改變實參的值

    4. 直接對map對象使用[]操作符獲得的對象不能直接修改狀態

    5. map中存儲指針而不是結構體

    示例

    package main
    import "fmt"
    func main() {
    	//一、聲明和初始化【配合make使用,否則是nil】
    	//1.聲明
    	var name1 map[int]string    //key是int,value是string
    	var name2 map[string]string //key是string,value是string
    	//2.分配內存
    	name1 = make(map[int]string, 2) //2:map的容量,當你的容量超過時會自動擴充
    	name2 = make(map[string]string, 2)
    	//3.賦值
    	//3.1 通過KeyType賦值
    	name1[0] = "張三" //key:0   value:張三
    	name1[1] = "李四" //key:1   value:李四
    	name1[2] = "王五" //key:2   value:王五    //已經超過了分配的的容量,會自動擴充
    	name2["A"] = "張三"
    	name2["B"] = "李四"
    	//二、讀取
    	//	1. 根據KeyType來讀取,如果keyType存在,就返回那個值,如果不存在,返回類型默認值值
    	fmt.Println(name1[0])
    	fmt.Println(name2["B"])
    	//	2. 測試map中key值是否存在【通過KeyType來取值時,會返回兩個值,一個是vlue,另一個是是否存在的bool】
    	if value, ok := name1[2]; ok {
    		fmt.Println("存在這個值", value)
    	} else {
    		fmt.Println("不存在這個值", value)
    	}
    	//三、刪除
    	delete(name1, 1)  //刪除了李四
    	delete(name2, "C")   //沒有這個C
    	fmt.Println(name1)
    	fmt.Println(name2)
    	//四、遍歷
    	for key,value:=range name1 {
    		fmt.Printf("key=%d,value=%s\n",key,value)
    	}
    	for key,value:=range name2 {
    		fmt.Printf("key=%s,value=%s\n",key,value)
    	}
    }

    感謝各位的閱讀,以上就是“怎么使用Go語言的map”的內容了,經過本文的學習后,相信大家對怎么使用Go語言的map這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女