前言:
上一篇着重说了数组与切片,这一篇我们就来说说说Map映射,对于Map很多语言都有,它是将值与键关联起来的集合,一般都是用相应的键去检索值,虽然我们可以和数组和切片一样去迭代它,但是它迭代返回的结果是无序的,因为Map是通过hash表来实现的,所以使用Map需要注意以下几点:
map是无序的,每次打印的结果都不一样,只能通过键key获取
map的长度不是确定的,也是一种引用类型
map同样使用len函数,可以返回其中key的数量
map的key可以是所有可以比较的类型,布尔型,整形都可以
1.使用make()创建map
不仅可以用make来创建,一般用map关键字也可以,而且如果不初始化map,就会创建一个nil map,就不会存放键值对,下面举个代码实例
2.使用delete()删除Map
delete(map, key) 函数用于删除Map集合的元素,删除不返回任何值。
直接看代码实例:
3.ok-idiom
怎么说吧,我们一般在Map中都是通过key来获取对应的值,但是当key不存在时,就会得到对应空值的默认类型,string就是空字符串,int就是0,但是程序也不会报错,这样就等于浪费了时间,所以ok-idiom就是用来检测key与值是否存在的
一般格式为
value,ok := map[key]
代码实例
4.引用类型Map
对比上一篇的切片,Map也是引用类型,多个Map也许会对应一个数据结构,影响一个就会影响其他
代码实例
上面两次输出的都是peopleSui,第二次是由于改变了拥有相同数据结构的newPeopleSui,所以对应的值就改变了