go Map
Map
特点
- 无序的
- 长度不固定,与slice一样,也是一种引用类型
- 内置len函数适用于map,返回map中拥有key的数量
- map的key必须是所有可以比较的类型,如布尔型,整数,浮点,字符串
创建Map
-
使用make()创建map
//声明map map是引用类型,默认零值是nil //如果map不初始化就是nil,所以不能存储键值对 //没有初始化的map,也说明还没有指向一块存储区域,所以无法进行存储操作 var map_name map[key_data_type]value_data_type nil //使用make函数创建 var map_name = make(map[key_data_type]value_data_type) 不是nil,但len==0 //字面量方式 map_name := map[string]float32{"c":1.2,"Go":3.4} 不是nil,len==2
各种类型的零值 int 0 float 0.0 string "" array 数组中类型的零值 slice 引用类型 nil //切片一旦声明,就默认自动创建底层数组,所以不初始化也能使用 map 引用类型 nil //map不初始化,则没有底层空间
-
判断map是否初始化
var m1 map[int]int if(m1 == nil){ //初始化 m1 = make(map[int]int) }
Map存取数据
-
存储键值对到map中
m1[1]="hello"
-
从map中取数据
m1[1] //正常取存在的key对应的值 m1[10] //key不存时,获取到的值是类型的零值 value,ok := m1[10] //通过ok的返回值(布尔型)可以判断是否有值
-
修改map中的数据
m1[1]="world"
-
删除map中的数据
func delete(m map[Type]Type1, key Type) //若m为nil或无此元素,delete不进行操作。
-
遍历map
使用for range 数组,切片: index,value map: key,value
-
排序
sort包 func Ints(a []int) //Ints函数将a排序为递增顺序 func Strings(a []string) //Strings函数将a排序为递增顺序
-
map与slice结合使用
var slice1 = make([]map[string]string,0,3) //切片中存放map
Map的数据类型
-
类型
map[key_type]value_type
-
引用类型
存储地址