11.map类型¶
go语言提供了一种称为map
的数据类型,如果你熟悉Python,这个map
类型与Python中的dict
相似。
即map
类型就是一种键值对哈希表,其键和值几乎可以是任何类型。具有查找快速、方便的特点。
声明¶
Note
显然,Go语言中的map
类型,需要指定key
和value
的类型,也不能在一个map
中混用多个类型。
查找与赋值¶
查找:
赋值:
Note
这里的新键可以是存在的,即覆盖;也可以是新的,也就是新创建一个键值对。
同时,对于上述的查找语句,如果查找的键不存在,Go语言不会报错,而是返回值类型的零值。
更好的查找语句:
map传入函数¶
map其实是一个指针,在传入函数或者复制的时候,修改其拷贝或者函数内参数,都会影响原变量。
删除键值对¶
上述代码将删除名为mapVar的map
中的键为key的键值对。
使用make对map进行预分配空间¶
除非在初始化时用字面值初始化了map,否则需要使用make对map类型变量预分配空间。
上述代码分配了一个指定长度大小的空间。Note
也许你注意到了,既然初始化可以指定长度,那么是不是也可以用len()
获得map变量的长度能?
答: 是的 ,且使用make初始化时,不论预分配多少长度或空间,使用len
获取的map变量的长度为0
range变量map¶
range
变量的map也有两个值,一个是key,另一个是value。