go Map

Posted henryno12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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. 引用类型

    存储地址

以上是关于go Map的主要内容,如果未能解决你的问题,请参考以下文章

解决go: go.mod file not found in current directory or any parent directory; see ‘go help modules‘(代码片段

你知道的Go切片扩容机制可能是错的

CSP核心代码片段记录

将多个输出中的hls属性设置为单独的片段代码

Go: 无效操作 - 类型 *map[key]value 不支持索引

Go 语言 map 如何顺序读取?