Go語言基礎之map

2022-09-15 13:48:29 字數 2113 閱讀 6896

go語言中提供的對映關係容器為map,其內部使用雜湊表(hash)實現。

map是一種無序的基於key-value的資料結構,go語言中的map是引用型別,必須初始化才能使用。

go語言中map的定義語法如下:

map[keytype]valuetype
其中,

map型別的變數預設初始值為nil,需要使用make()函式來分配記憶體。語法為:

make(map[keytype]valuetype, [cap])
其中cap表示map的容量,該引數雖然不是必須的,但是我們應該在初始化map的時候就為其指定乙個合適的容量。

map中的資料都是成對出現的,map的基本使用示例**如下:

func main() 

輸出:map[小明:100 張三:90]

100type of a:map[string]int

map也支援在宣告的時候填充元素,例如:

func main() 

fmt.println(userinfo) //

}

如果單純宣告map沒有使用make初始化是無法正常使用的

var a map[string]int // 單純初始化

c[0] = 100 // 因為沒有分配記憶體 所以執行程式會拋錯

go語言中有個判斷map中鍵是否存在的特殊寫法,格式如下:

value, ok := map[key]
舉個例子:

func main()  else 

}

go語言中使用for range遍歷map。

func main() 

}

但我們只想遍歷key的時候,可以按下面的寫法:

func main() 

}

只遍歷value時候,可以按下面寫法:

func main() 

}

注意:遍歷map時的元素順序與新增鍵值對的順序無關。map是無序的

使用delete()內建函式從map中刪除一組鍵值對,delete()函式的格式如下:

delete(map, key)
其中,

示例**如下:

func main()

}

func main() 

//取出map中的所有key存入切片keys

var keys = make(string, 0, 200)

for key := range scoremap

//對切片進行排序

sort.strings(keys)

//按照排序後的key遍歷map 通過已經排序好的key取對應value

for _, key := range keys

}

下面的**演示了切片中的元素為map型別時的操作:

func main() 

fmt.println("after init")

// 對切片中的map元素進行初始化

mapslice[0] = make(map[string]string, 10)

mapslice[0]["name"] = "小王子"

mapslice[0]["password"] = "123456"

mapslice[0]["address"] = "沙河"

for index, value := range mapslice

}

下面的**演示了map中值為切片型別的操作:

func main() 

slicemap[key] = value

fmt.println(slicemap)

}

go語言基礎之map

go語言中提供的對映關係容器為map,其內部使用雜湊表hash實現 map map是一種無序的基於key value的資料結構,必須初始化才能使用 package main import fmt func main fmt.println map1 判斷某乙個值是否存在 返回兩個引數,1.返回的值 ...

Go語言基礎之map

go語言中提供的對映關係容器為map,其內部使用雜湊表 hash 實現。map是一種無序的基於key value的資料結構,go語言中的map是引用型別,必須初始化才能使用。go語言中map的定義語法如下 map keytype valuetype 其中,map型別的變數預設初始值為nil,需要使用...

Go語言基礎之map

map是python中的dict型別。目錄 map的宣告基本上沒有多餘的元素。var mapname map keytpye valuetype其中 map型別的變數預設初始值為nil,需要使用make 函式來分配記憶體。語法為 make map keytype valuetype,cap 如果不使...