一.map介绍
map是key-value数据结构,又称为字段或者关联数组。类似与其他编程语言的集合
二.map的声明
基本语法:
var 变量名 map[keytype]valuetype
Golang中的map的key可以是很多种类型,比如bool,数字,string,指针,channel,还可以是只包含前面几个类型的 接口、结构体、数组,通常为int、string
ps:slice,map还有function不可以,因为这几个没法用 == 来判断
声明是不会分配内存的,初始化需要make,分配内存后才能赋值和使用
案例演示:
说明:1.使用前一定要make
2.map的key是不能重复的,如果重复了,则以最后的key-value为准
3.map的value是可以相同的
三.map使用的方式
四.map的增删查改操作
1.map增加和更新:
map["key"] = value //如果key还没有,就是增加,如果key纯在就是修改
2.map删除
说明:
delete(map,"key"),delete是一个内置函数,如果key存在,就删除该key-value,如果key不存在,不操作,但是也不会报错
细节说明:
(1).如果我们要删除map的所有key,没有专门的方法去一次删除,可以遍历key,逐个删除
(2)或者 map=make(...),make一个新的,让原来的成为垃圾。
3.map查找
案例:
说明:如果map中存在 "n1" ,那么findRes就会返回true,否则返回flase,findRes随便取名
五.map遍历
使用for-range的结构遍历,为什么不用for 因为map的key不一定是数字
六.map切片
介绍:切片的数据类型如果是map,则我们称为slice of map,map切片,这样使用则map这个 数就可以动态变化了
案例:要求一个map来记录monster的信息name和age,也就是说一个monster对应一个map。 并且妖怪的个数可以动态的增加=>map切片
七.map使用细节
1.map是引用类型,遵守引用类型传递的机制,在一个函数接收map,修改后,会直接修改原来的map
2.map的容量达到后,在想map增加元素,会自动扩容,并不会发生panic,也就是说map能动态的增长键值对
3.map的value也经常使用struct类型,更适合管理复杂的数据,比如value为student结构体