Go語言中的 映射(map)是一種內置的數據結構,是一個用於存儲一系列無序的鍵值對的集合。bash
映射裏基於鍵來存儲值,鍵就像索引同樣,指向與該鍵關聯的值。數據結構
map_variable := make(map[key_data_type]value_data_type)
函數
// 建立一個映射,鍵的類型是string,值的類型是int
dict := make(map[string]int)
複製代碼
// 建立一個映射,鍵和值的類型都是string
// 使用兩個鍵值對初始化映射
dict := map[string]string{"Red": "#da1337", "Orange": "#e95a22"}
複製代碼
鍵值對賦值給映射,是經過指定適當類型的鍵並給這個鍵賦一個值來完成的。spa
// 建立一個空映射,用來存儲顏色以及顏色對應的十六進制代碼
colors := map[string]string{}
// 將Red的代碼加入到映射
colors["Red"] = "#da1337"
複製代碼
// 經過聲明映射建立一個 nil 映射
var colors map[string]string
// 將 Red 的代碼加入到映射
colors["Red"] = "#da1337"
Runtime Error:
panic: runtime error: assignment to entry in nil map
複製代碼
// 獲取鍵 Blue 對應的值
value, exists := colors["Blue"]
// 這個鍵存在嗎?
if exists {
fmt.Println(value)
}
複製代碼
// 獲取鍵 Blue 對應的值
value := colors["Blue"]
// 這個鍵存在嗎?
if value != "" {
fmt.Println(value)
}
複製代碼
// 建立一個映射,存儲顏色以及顏色對應的十六進制
colors := map[string]string{
"AliceBlue": "#f0f8ff",
"Coral": "#ff7F50",
"DarkGray": "#a9a9a9",
"ForestGreen": "#228b22"
}
// 顯示映射裏的全部顏色
for key, value := range colors {
fmt.Printf("key: %s Value: %s\n", key, value)
}
複製代碼
// 刪除鍵爲 Coral 的鍵值對
delete(colors, "Coral")
// 顯示映射裏的全部顏色
for key, value := range colors {
fmt.Printf("key: %s Value: %s\n", key, value)
}
複製代碼
在函數間傳遞映射並不會製造出該映射的一個副本。實際上,當傳遞映射給一個函數,並對這個映射作了修改時,全部對這個映射對引用都會擦覺到這個修改。rest