泛型 map
概念说明
map 的 key 必须可比较。
因此定义泛型 map 时,key 的类型参数通常要使用 comparable 约束。
value 的类型限制通常更宽,可以使用 any。
这样就能复用一套获取、设置、判断存在的逻辑。
语法/规则
- 泛型 map 可写成
type Dict[K comparable, V any] map[K]V。 K comparable表示 key 可以使用==和!=。V any表示 value 可以是任意类型。- 读取 map 时建议返回
value, ok,区分不存在和零值。 - 写入前要确保 map 已初始化。
泛型 map 示例
| |
输出结果:
| |
常见错误
- key 类型参数没有写
comparable,导致无法作为 map key。 - 读取 map 只接收一个返回值,无法区分键不存在和零值。
- 只声明
var dict Dict[string, int]就直接写入,可能因为底层 map 未初始化而 panic。