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) }
 
 
 
 
 
 
 
 
 
 
  |