什麼是 map
package main
import "fmt"
func main() {
/*
- map 是什麼。類似於字典
- 特點:
- 無順序
- 鍵值對
- 引用型別
*/
// 宣告 map
var map01 map[int]string
fmt.Printf("map01 = %v,型別:%T\n", map01, map01)
if map01 == nil {
fmt.Println("空map")
}
// 使用 make 建立 map
var map02 = make(map[int]string)
fmt.Println("make 定義 map:", map02)
// 初始化map。定義map,給map賦資料
var map03 = map[string]int{"go": 1, "java": 2}
fmt.Println(map03)
fmt.Printf("map03型別:%T", map03)
}
map 使用
package main
import "fmt"
func main() {
// 使用 map
// 1. 初始化map
var map04 = make(map[int]int)
map04[1] = 123
map04[3] = 222
map04[4] = 675423
fmt.Println(map04)
// 2. map 透過key取值
fmt.Println(map04[1])
fmt.Println(map04[2]) // 不存在的key 返回 0 / 空
// 判斷 key 是否存在map。 value = map[key] 隱藏返回值 ok-idiom,可選引數
value, ok := map04[1]
value1, ok1 := map04[2]
fmt.Println("map中的key是否存在01:", value, ok) // 如果 key 存在 。 ok 結果為true,否則為false
if ok {
fmt.Println("map04中存在key : 1")
} else {
fmt.Println("map04中不存在key: 1")
}
fmt.Println("map中的key是否存在02:", value1, ok1) // 如果 key 存在 。 ok 結果為true,否則為false
// 3. 修改 map資料
fmt.Println("修改前:", map04)
map04[4] = 200
fmt.Println("修改後:", map04)
// 4. delete 刪除map中的資料
fmt.Println("delete 刪除map某個key前:", map04)
delete(map04, 4)
fmt.Println("delete 刪除map某個key後:", map04)
// 5. 獲取map的長度 len。 map沒有容量
fmt.Println("map04的長度", len(map04))
// 6. 遍歷map
for k, v := range map04 {
// k 是鍵
// v 是值
fmt.Println("for range 遍歷---", "key:", k, "value:", v)
}
}
map 和 切片結合
package main
import "fmt"
func main() {
// map 和 slice 結合使用
var userMap1 = make(map[string]string)
userMap1["name"] = "jack"
userMap1["age"] = "19"
userMap1["sex"] = "man"
userMap1["addr"] = "zh"
var userMap2 = make(map[string]string)
userMap2["name"] = "lisi"
userMap2["age"] = "30"
userMap2["sex"] = "woman"
userMap2["addr"] = "zh"
var userMap3 = map[string]string{"name": "zhangsna", "age": "30"}
// 將 userMap1 和 userMap2 和 userMap3 儲存到切片
userDatas := make([]map[string]string, 0, 10)
userDatas = append(userDatas, userMap1, userMap2, userMap3)
fmt.Println("切片:", userDatas)
// 遍歷 userDatas 切片
for _, data := range userDatas {
fmt.Println(data["name"], data["age"])
}
}