多个映射中高效的密钥存在检查
在 Go 中,使用映射是很常见的,映射是用于检索密钥的高效数据结构-值对。但是,开发人员提供的代码演示了需要检查两个单独的映射中是否存在密钥。问题仍然是这个过程是否可以变得更简洁。
正如答案中所解释的,在 Go 中使用特殊的 v, ok := m[k] 形式来检查键是否存在仅限于单变量赋值。因此,使用这种形式将两个检查合并为一个 if 条件是不可行的。
但是,还有其他方法可以实现所需的功能:
元组赋值:
如果map的值类型是接口类型,并且可以保证不使用nil值,则可以使用两个索引进行元组赋值表达式:
if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil { // ... }
辅助函数:
可以创建辅助函数来执行两个映射中的键是否存在检查并返回结果:
func idx(m1, m2 map[string]interface{}, k string) ( v1, v2 interface{}, ok1, ok2 bool) { v1, ok1 = m1[k] v2, ok2 = m2[k] return }
该函数可以按如下方式使用:
if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); ok1 && ok2 { // ... }
这些方法允许在单个条件语句内的多个映射中对键是否存在进行简洁有效的检查。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3