Go語言中的鍵值對(key->value)集合,稱之為映射map。映射map是變長類型,定義時不需要指定長度。映射map是無序的,遍歷是的順序不可期,原因是底層由hash表實現(xiàn)。
邏輯結(jié)構(gòu)表示為:
var m = map[key_type]value_type{key1: value1, key2: value2}
var m = make(map[key_type]value_type)
// 示例,字符串型下標,字符串型值:
var m = make(map[string]string) //make()會分配內(nèi)存空間,初始化。
m["east"] = "東"
m["west"] = "西"
// 直接初始化
var m = map[string]string{"east": "東", "west": "西"}
與數(shù)組類型,使用下標完成映射元素的訪問。
var m = map[string]string{"east": "東", "west": "西"}
fmt.Println(m["east"])
// 東
fmt.Println(m["west"])
// 西
for k, v := range mapVar {
fmt.Println(k, v)
}
遍歷的順序不可期。
切片為引用類型,因此切片的默認初始值為nil。
同時復(fù)制時為引用傳遞,修改會相互影響。
通過key獲取元素時,使用第二個變量,可以接收到當前key是否存在的布爾值。
var m = map[string]string{"east": "東", "west": "西"}
value, exists := m["south"]
// value: 東, exists: true
value, exists := m["south"]
// value: , exists: false
delete(map, key),刪除 map 中,指定的 key。如果 key 不存在,該操作不會產(chǎn)生錯誤。
var m = map[string]string{"east": "東", "west": "西"}
delete(m, "west")
fmt.Println(m)
// map[east:東]
如果 map 的值類型可以作為 key 且所有的 value 是唯一的,那么通過下面的方法可以做到鍵值對調(diào):
var m = map[string]string{"east": "東", "west": "西"}
for k, v := range m {
m[v] = k
}
完!
原文出自:小韓說課
微信關(guān)注:小韓說課
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。