go Map

Map

特点

  1. 无序的
  2. 长度不固定,与slice一样,也是一种引用类型
  3. 内置len函数适用于map,返回map中拥有key的数量
  4. map的key必须是所有可以比较的类型,如布尔型,整数,浮点,字符串

创建Map

  1. 使用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不初始化,则没有底层空间
    
  2. 判断map是否初始化

    var m1 map[int]int
    if(m1 == nil){
        //初始化
     m1 = make(map[int]int)
    }
    

Map存取数据

  1. 存储键值对到map中

    m1[1]="hello"
    
  2. 从map中取数据

    m1[1] //正常取存在的key对应的值
    m1[10] //key不存时,获取到的值是类型的零值
    
    value,ok := m1[10] //通过ok的返回值(布尔型)可以判断是否有值
    
  3. 修改map中的数据

    m1[1]="world"
    
  4. 删除map中的数据

    func delete(m map[Type]Type1, key Type)
    //若m为nil或无此元素,delete不进行操作。
    
  5. 遍历map

    使用for range
    
    数组,切片: index,value
    map: key,value
    
  6. 排序

    sort包
    
    func Ints(a []int)
    //Ints函数将a排序为递增顺序
    
    func Strings(a []string)
    //Strings函数将a排序为递增顺序
    
  7. map与slice结合使用

    var slice1 = make([]map[string]string,0,3)
    //切片中存放map
    

Map的数据类型

  1. 类型

    map[key_type]value_type

  2. 引用类型

    存储地址

posted @ 2020-03-04 18:09  henryno12  阅读(136)  评论(0编辑  收藏  举报