← 返回首页

Go中 Map的Key一定要是可比较的吗?为什么?

Map的Key必须要可比较。

首先,Map会对我们提供的Key进行哈希运算,得到一个哈希值。

这个哈希值决定了这个键值对大概存储在哪个位置(也就是哪个"桶"里)。然而,不同的Key可能会产生相同的哈希值,这就是"哈希冲突"。

当多个Key被定位到同一个"桶"里时,Map就没法只靠哈希值来区分它们了。

此时,它必须在桶内进行逐个遍历,用我们传入的Key和桶里已有的每一个Key进行 相等(==)比较。这样才能确保我们操作的是正确的键值对。