🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] map是一种 **无序** 的基于 **key-value** 的数据结构,Go语言中的map是 **引用** 类型,必须初始化才能使用。 Golang语法map定义语法: ```go map[keyType]valueType ``` ## map定义 ```go // 方法一 var m1 = map[string]string{ "name": "jiaxzeng", "age": "18", } fmt.Printf("m1: %v\n", m1) // 简单声明 m2 := map[string]string{ "name": "jiaxzeng", "age": "18", } fmt.Printf("m2: %v\n", m2) // 方法二 var m3 = make(map[string]string) m3["name"] = "jiaxzeng" m3["age"] = "18" fmt.Printf("m3: %v\n", m3) // 简单声明 m4 := make(map[string]string) m4["name"] = "jiaxzeng" m4["age"] = "18" fmt.Printf("m4: %v\n", m4) ``` ## 遍历map ```go m5 := make(map[string]string) m5["name"] = "jiaxzeng" m5["gender"] = "male" m5["nationality"] = "China" for key, value := range m5 { fmt.Printf("%s: %s\n", key, value) } // 运行结果: // name: jiaxzeng // gender: male // nationality: China ``` ## 判断map中某个键值是否存在 >[info] map根据键取值,有两个返回值。分别是键的值及是否存在。第二参数返回的布尔值。 ```go value, ok := m5["names"] if ok == false { fmt.Println("The key does not exist") } else { fmt.Printf("value: %v\n", value) } ``` ## map增加键 ```go // 增加key m5["age"] = "22" fmt.Printf("m5: %v\n", m5) ``` ## map删除键 使用delete()内建函数从map中删除一组键值对 ```go delete(m5, "name") fmt.Printf("m5: %v\n", m5) ``` ## map常用的类型 map常用的类型 - map[string]string :key和value都是字符串 - map[string][]Type :key是字符串,value是切片 - []map[string]string : 切片的元素是映射map ### map[string]string 上面的示例都是 map[string]string 这里不演示了,请参考上面的例子即可。 ### map[string][]Type ```go m6 := make(map[string][]string) m6["广东"] = []string{"广州", "深圳", "珠海"} m6["山东"] = []string{"济南", "淄博", "青岛"} for province, citys := range m6 { fmt.Printf("%s: ", province) for i, city := range citys { if i == len(citys)-1 { fmt.Printf("%v", city) } else { fmt.Printf("%v、", city) } } fmt.Println("") } // 运行结果: // 广东: 广州、深圳、珠海 // 山东: 济南、淄博、青岛 ``` ### []map[string]string ```go // []map[string]string a1 := make([]map[string]string, 2, 5) a1[0] = map[string]string{ "name": "jiaxzeng", "gender": "male", "nationality": "China", } a1[1] = map[string]string{ "name": "xiaodunan", "gender": "female", "nationality": "China", } for _, v := range a1 { fmt.Println(v) } // 运行结果: // map[gender:male name:jiaxzeng nationality:China] // map[gender:female name:xiaodunan nationality:China] ```