在 Go 语言中,判断一个 map 是否包含某个指定的 key,可以采用哪种方式?
考察说明
考查 Go 语言中 map 的基本操作,特别是判断 key 是否存在的方法。
回答思路
- 【回答框架 1】在 Go 中,判断 map 中是否存在某个 key 的标准方法是使用索引表达式:value, ok := m[key]。如果 key 存在,ok 为 true,value 为对应的值;如果 key 不存在,ok 为 false,value 为零值。
- 【回答框架 2】另一种方式是直接使用 value := m[key] 来判断,但这无法区分 key 不存在和 value 为零值的情况,因此不推荐用于判断存在性。
- 【回答框架 3】需要注意,map 是引用类型,直接访问不存在的 key 不会导致 panic,而是返回零值。
- 【关键点 1】使用 value, ok := m[key] 是判断 key 是否存在的最可靠方式。
- 【关键点 2】直接使用 value := m[key] 无法区分 key 不存在和 value 为零值的情况。
- 【关键点 3】map 的零值是 nil,可以向 nil map 读取或写入,但写入会 panic。
- 【易错点 1】不要使用 value := m[key] 然后判断 value 是否为零值来判断 key 是否存在,因为 key 存在且值为零值时会误判。
- 【易错点 2】不要用 len(m) 来判断某个 key 是否存在。