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]) #打印
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号