• go基础类型map类型


    一 说明
    map类型也被成为字典类型,底层是哈希表 单个hashi值相同的话会形成链表,存储多个值
    二 快速定位的原因
    1 先根据 哈希算法算出hash值得位置
    2 具体值如果有多个,就再根据链表进行精确定位
    三 限制
    map 数据类型限制必须是可hash的对象,因为本质就是根据hash表来实现的
    本身是无序的,随机顺序存储
    key本身不能重复 value是可以的
    key仅支持以下数据类型-value可以是任何类型
    • int
    • float
    • bool
    • string
    • array-1只能是数组,不能是其他类型2 数组类型嵌套类型也只能是支持的类型,不能是切片 map之类的,嵌套也会判断 v15:=make(map[[2][]sting) 嵌套类型为字符串切片 也是非法
    • pointer(指针)
    • struct-常用
    • channel
    • type 关键字 上述支持的类型 - 新定义的类型也是可以支持的
    • 切片-MAP-FUNCTION是无法比较的
    四 声明
    vars:=map[data_type]data_tye{"k":v} 声明并初始化复制
    vars:=make(map[data_type]data_type,容量)
    声明并开辟空间-可以直接使用,如果声明了容量,就代表有容量的个数可以存放k-v
    var vars make(map[data_type]data_type 只是声明并不能直接使用
    五 kv-操作
    map1["name"] = "小明"
    六 循环
    for k,v:= range map1{
    fmt.Println(key,v)
    }
    

     七 判断k-v是否存在 

    capital,ok := map1 ["status"]/
    if(ok){
    fmt.Println("status 是",capital)
    }else{
    fmt.Println("status 不存在")
    }
    }
    

    八 len()-长度计算

        len()计算map计算的是map内的k-v的个数

     九 删除 delete()
       delete(map_name,key)

     十 map与结构退

    type person struct{ #定义结构体
    
    name string
    
    age  int 
    
    }
    
    var person_list=make(map[int]person,10)  #定义一个map,值为结构体
    
    stu1:=person{"111",11}#先实例化一个对象
    
    person_list[1]=stu1 # 直接赋值实例化对象
    
    fmt.print(c[1]) #打印
    

      

  • 相关阅读:
    贪心策略---不重叠的区间个数
    贪心策略---分配饼干
    双指针---最长子序列
    双指针---回文字符串
    双指针---反转字符串中的元音字符
    双指针---两数平方和
    双指针---有序数组的TWO SUM
    排序---小结
    排序---桶排序
    变量的解构赋值
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/16702590.html
Copyright © 2020-2023  润新知