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 如果不使...