映射 - Go 語言學習筆記

概述

Go語言中的 映射(map)是一種內置的數據結構,是一個用於存儲一系列無序的鍵值對的集合。bash

映射裏基於鍵來存儲值,鍵就像索引同樣,指向與該鍵關聯的值。數據結構

建立和初始化

1. 使用內置函數 make() 聲明映射

map_variable := make(map[key_data_type]value_data_type)函數

// 建立一個映射,鍵的類型是string,值的類型是int
dict := make(map[string]int)
複製代碼

2. 使用映射字面量聲明映射

// 建立一個映射,鍵和值的類型都是string
// 使用兩個鍵值對初始化映射
dict := map[string]string{"Red": "#da1337", "Orange": "#e95a22"}
複製代碼

使用映射

1. 爲映射賦值

鍵值對賦值給映射,是經過指定適當類型的鍵並給這個鍵賦一個值來完成的。spa

// 建立一個空映射,用來存儲顏色以及顏色對應的十六進制代碼
colors := map[string]string{}

// 將Red的代碼加入到映射
colors["Red"] = "#da1337"
複製代碼

2. 對 nil 映射賦值運行會報錯

// 經過聲明映射建立一個 nil 映射
var colors map[string]string

// 將 Red 的代碼加入到映射
colors["Red"] = "#da1337"

Runtime Error:
panic: runtime error: assignment to entry in nil map
複製代碼

3. 從映射獲取值並判斷鍵是否存在

// 獲取鍵 Blue 對應的值
value, exists := colors["Blue"]
// 這個鍵存在嗎?
if exists {
    fmt.Println(value)
}
複製代碼

4. 從映射獲取值,並經過該值判斷鍵是否存在

// 獲取鍵 Blue 對應的值
value := colors["Blue"]

// 這個鍵存在嗎?
if value != "" {
    fmt.Println(value)
}
複製代碼

5. 使用 range 迭代映射

// 建立一個映射,存儲顏色以及顏色對應的十六進制
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)
}
複製代碼

6. 從映射中刪除一項

// 刪除鍵爲 Coral 的鍵值對
delete(colors, "Coral")

// 顯示映射裏的全部顏色
for key, value := range colors {
    fmt.Printf("key: %s Value: %s\n", key, value)
}
複製代碼

在函數間傳遞映射

在函數間傳遞映射並不會製造出該映射的一個副本。實際上,當傳遞映射給一個函數,並對這個映射作了修改時,全部對這個映射對引用都會擦覺到這個修改。rest

相關文章
相關標籤/搜索