栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在一种情况下检查密钥是否存在于多个地图中

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在一种情况下检查密钥是否存在于多个地图中

不,这是不可能的。规格:索引表达式:

地图a上的索引表达式,其类型

map[K]V
用于特殊形式的赋值或初始化

v, ok = a[x]v, ok := a[x]var v, ok = a[x]

产生另一个无类型的布尔值。的值

ok
true
x
是否存在于映射中,否则为false。

因此,

v, ok := m[k]
只有在没有其他分配的情况下,才可以使用特殊形式。

但是,如果不使用映射的值类型的零值,则可以使用简单的元组分配进行检查;通过不使用特殊形式而是使用2个简单的索引表达式。

例如,如果您的值类型是某种接口类型(例如

interface{}
),并且您知道不使用该
nil
值,则可以执行以下操作:

if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil {    fmt.Printf("Both map contains key '%s': %v, %vn", "aaa", v1, v2)}

当然,有了一个辅助功能,您可以一步完成:

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 {    fmt.Printf("Both map contains key '%s': %v, %vn", "aaa", v1, v2)}

在Go Playground上尝试示例。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/447959.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号