1. map介绍
map是一种无序的键值对集合。map最重要的一点就是通过key来快速检索数据,key类似索引,指向数据的值。
map是一种集合,所以我们可以像迭代数组和切片那样去迭代它。不过,map是无序的,我们无法决定它的返回数据,这是因为map是使用hash表来实现的
基本语法
1 2 3 4 5 6 7 8 9 10 11
| var 变量名 map[keytype]valuetype
变量名 = make(map[keytype]valuetype)
变量名 := make(map[keytype]valuetype)
|
1.1 实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| package main
import "fmt"
func main() { var a map[string]string a = make(map[string]string, 10) a["num1"] = "刘备" a["num2"] = "关羽" a["num3"] = "张飞" fmt.Println(a) }
|
2. map遍历
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| package main
import "fmt"
func main() { cities := make(map[string]string) cities["no1"] = "北京" cities["no2"] = "上海" cities["no3"] = "广州" for k, v := range cities { fmt.Printf("k=%v,v=%v\n", k, v) } }
|
3. map增删改查
3.1 map的增加和更新
3.2 map的删除
1 2 3 4
| delete(map,"key")
delete 是一个内置函数,如果 key 存在,就删除该 key-value,如果 key 不存在,不操作,但是也不会报错。如果我们要删除 map 的所有 key ,没有一个专门的方法一次删除,可以遍历一下 key, 逐个删除或者 map = make(...),make 一个新的,让原来的成为垃圾,被 gc 回收。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| package main
import "fmt"
func main() { cities := make(map[string]string) cities["no1"] = "北京" cities["no2"] = "上海" cities["no3"] = "广州" fmt.Println(cities)
cities["no3"] = "广州-改" fmt.Println(cities)
delete(cities, "no1") fmt.Println(cities)
delete(cities, "no4") fmt.Println(cities)
cities = make(map[string]string) fmt.Println(cities) }
|