基本定義
- 類似其它語言中的雜湊表或者字典,以 key => value 形式儲存資料 簡單的理解為 PHP 中關聯陣列
- 格式為 map[keyType]valueType
- key 必須是支援 == 或者 != 比較運算的型別,不可以是函式,map 或者 slice
- map 使用 make() 建立,支援 := 這種簡寫的方式
- map 是無序的,每次列印出來的 map 都會不一樣,它不能通過 index 獲取,而必須通過 key 獲取
- map 的長度是不固定的,也就是和 slice 一樣,也是一種引用型別
- 內建的len函式同樣適用於 map,返回 map 擁有的 key 的數量
- map 的值可以很方便的修改,通過 mapType[“one”] = 11 可以很容易的把 key 為 one 的值改為11
- 和 slice 一樣,如果兩個map 同時指向同一個底層資料,那麼任何一個改變.另一個也會改變
程式碼練習
var numbers map[string]int // 宣告一個 key 是字串,值為 int 的map
numbers = make(map[string]int] // 另一種宣告方式 map 使用 make() 建立
numbers := make(map[string]int) // 支援 := 這種簡寫的方式
numbers["one"] = 1 // 賦值
numbers["two"] = 2 // 賦值
fmt.Println(numbers["one"]) // 而必須通過 key 獲取對應的值. 輸出 1
rating := map[string]float32{"C": 5, "Go": 4.5, "Python": 4.5, "PHP": 2} // 初始化一個有值的map
csharpRating, ok := rating["C++"] // 新賦值給別的變數
if ok {
fmt.Println("輸出ok的值", csharpRating)
} else {
fmt.Println("沒找到對應的OK的值")
}
delete(rating, "C") // 刪除key為C的元素
fmt.Println(rating["C"]) // 輸出 0
// 內建的len函式同樣適用於 map,返回 map 擁有的 key 的數量
fmt.Println(len(rating)) // 因為刪除了一個key 輸出 3
// 和 slice 一樣,如果兩個map 同時指向同一個底層資料,那麼任何一個改變.另一個也會改變
m := make(map[string]string)
m["Hello"] = "你好"
m1 := m
m1["Hello"] = "不好" // 現在m["Hello"]的值已經是 不好 了
mapa := map[string]int{"one":1,"two":2}
mapb := map[string]int{"yi": 1, "er": 2}
if mapa["one"] == mapb["yi"] { // key 必須是支援 == 比較運算
fmt.Println("可以比較")
}
if mapa["one"] != mapb["er"] { // key 必須是支援 != 比較運算
fmt.Println("可以比較")
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結