go基础类型-MAP

一 说明
map类型也被成为字典类型,底层是哈希表 单个hashi值相同的话会形成链表,存储多个值
二 快速定位的原因
1 先根据 哈希算法算出hash值得位置
2 具体值如果有多个,就再根据链表进行精确定位
三 限制
map 数据类型限制必须是可hash的对象,因为本质就是根据hash表来实现的
本身是无序的,随机顺序存储
key本身不能重复 value是可以的
key支持数据类型
  • 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]) #打印

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章