- 字典是哈希表的特定实现,在这个实现中,键的类型是受限的,而元素不会有类型限制。
- 一个哈希表会持有一定数量的桶,哈希表会先用哈希函数将键值转换为哈希值,然后根据哈希值的低几位定位某个特定的桶。
- 在查找过程中,会先定位桶,然后再寻找这个键。
键值的类型约束
- 键值的类型必须要可以支持 == 和 != 进行判等操作。
- 函数、字典、切片不支持判等,所以它们也不能作为键值存在。
- 之所以有这个限制,是因为 Go 需要在哈希冲突的时候依据键值确定元素,判断两个键值是否相等,就必定会使用判等操作。
- 上述类型作为键值会引发 panic ,不仅如此,如果你使用某个容器作为键,这个中其中也不能使用这些类型。
- 建议使用基本类型作为键。推荐数值类型和指针类型。
- 字典是引用类型,所以声明它而不初始化的时候,它的值为 nil。
- 对于一个为 nil 的字典,不能使用添加元素对的操作,否则会引发 panic。
网友评论