🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 1.介绍 `map`是一种序的基于key-value的数据结构,Go语言中map是引用类型,须初始化后才能使用。 ## 2.定义 ``` map[KeyType]ValueType KeyType:键类型 ValueType:值类型 // map类型的变量初始值是nil,需要用make()函数来分配内存。 // cap指定map的容量 make(map[KeyType]ValueType, [cap]) ``` ## 3.基本使用 ``` func main(){ ageMap := make(map[string]int, 8) ageMap["Alice"] = 21 ageMap["Bob"] = 22 fmt.Println(ageMap) } // 也支持声明时填充元素 func main(){ userInfo := map[string]string { "username": "Alice", "age": "21", } fmt.Println(userInfo) } ``` ## 4.map的基本操作 ### 4.1.判断某个键是否存在 ``` value, ok := map[key] ``` 例: ``` func main(){ ageMap := make(map[string]int, 8) ageMap["Alice"] = 21 ageMap["Bob"] = 22 v, ok := ageMap["Alice"] if ok { fmt.Println(v) } else { fmt.Println("no one") } } ``` ### 4.2.map的遍历 ~~~ func main() { m := make(map[string]int, 8) m["Alice"] = 21 m["Bob"] = 22 m["Cindy"] = 23 for k, v := range m { fmt.Printf("k: %s, v:%d\n", k, v) } fmt.Println("=====================") // 只遍历k for k := range m { fmt.Printf("k: %s\n", k) } fmt.Println("=====================") // 只遍历v for _, v := range m { fmt.Printf("v: %d\n", v) } } ~~~ ### 4.3.删除键值对 ``` // 删除map中键为key的键值对 delete(map, key) ``` 例子: ~~~ ageMap := make(map[string]int) ageMap["alice"] = 21 ageMap["bob"] = 22 ageMap["cindy"] = 23 fmt.Println(ageMap) delete(ageMap, "alice") fmt.Println(ageMap) ~~~