這篇文章主要講解了“怎么使用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) }
map必須借助make分配內存空間,否則是nil
字面量初始化必修保證key是唯一的,否則error
map傳遞的是引用,就是說形參會改變實參的值
直接對map對象使用[]操作符獲得的對象不能直接修改狀態
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這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。