# 3.3、Golang map `key:value` 键值对的数据结构容器 ## 语法格式 ```go // 声明变量,默认是nil var map_variable map[key_data_type]value_data_type // 使用make函数 var map_variable = make(map[key_data_type]value_data_type) ``` 示例 ```go package main import ( "fmt" ) func main() { // 声明 var m map[string]string fmt.Printf("%v\n", m) // map[] fmt.Printf("%T\n", m) // map[string]string // 初始化 m = make(map[string]string) m["name"] = "Steve" fmt.Printf("%v\n", m) // map[name:Steve] } ``` 声明并初始化 ```go package main import ( "fmt" ) func main() { // 声明并初始化 m1 := make(map[string]string) m1["name"] = "Tom" m1["age"] = "12" fmt.Printf("%v\n", m1) // map[age:12 name:Tom] // 声明并直接赋初始值 m2 := map[string]string{ "name": "Jack", "age": "21", } fmt.Printf("%v\n", m2) // map[age:21 name:Jack] } ``` ## 访问数据 通过键key 获取值value ```go package main import ( "fmt" ) func main() { m := map[string]string{ "name": "Jack", "age": "21", } // 访问成员 name := m["name"] fmt.Printf("%v\n", name) // Jack } ``` ## 成员检查 判断键是否存在 ```go value, ok = map[key] ``` 示例 ```go package main import ( "fmt" ) func main() { m := map[string]string{ "name": "Jack", "age": "21", } // 访问成员 name, ok := m["name"] fmt.Printf("%v\n", name) // Jack fmt.Printf("%v\n", ok) // true } ``` ## 遍历map 示例1 ```go package main import ( "fmt" ) func main() { m := map[string]string{ "name": "Jack", "age": "21", } for key, value := range m { fmt.Printf("%v => %v\n", key, value) } // name => Jack // age => 21 } ``` 示例2 ```go package main import ( "fmt" ) func main() { m := map[string]string{ "name": "Jack", "age": "21", } for key := range m { fmt.Printf("%v => %v\n", key, m[key]) } // name => Jack // age => 21 } ```