4.3 map

散列表是设计精妙、用途广泛的数据结构之一。它是一个拥有键值对元素的无序集合。在这个集合中,键的值是唯一的,键对应的值可以通过键来获取、更新或移除。无论这个散列表有多大,这些操作基本上是通过常量时间的键比较就可以完成。

在Go语言中,map是散列表的引用,map的类型是map[K]V,其中K和V是字典的键和值对应的数据类型。map中所有的键都拥有相同的数据类型,同时所有的值也都拥有相同的数据类型,但是键的类型和值的类型不一定相同。键的类型K,必须是可以通过操作符==来进行比较的数据类型,所以map可以检测某一个键是否已经存在。虽然浮点型是可以比较的,但是比较浮点型的相等性不是一个好主意,如第3章所述,尤其是在NaN可以是浮点型值的时候。当然,值类型V没有任何限制。

内置函数make可以用来创建一个map:

也可以使用map的字面量来新建一个带初始化键值对元素的字典:

这个等价于:

因此,新的空map的另外一种表达式是:map[string]int{}。

map的元素访问也是通过下标的方式: ...

Get Go程序设计语言 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.