go - 检查一张地图的钥匙是否存在于另一张地图中

时间:2016-07-18 11:40:13

标签: go

我有一本字典

a = {1:11, 2:22}

我想检查b中是否存在a中的密钥

b = {3:33, 1:11}

我怎样才能用Go语言做到这一点?

我这样做了:

a:= make(map[string][]string)
a["1"] = append(a["1"], "11")
a["1"] = append(a["1"], "22")

我有一个词典b

b:= make(map[string]string)
b["1"] = "11"

我该怎么检查?基本上,我想检查1中是否存在来自b的密钥a

1 个答案:

答案 0 :(得分:3)

您可以使用go惯用方法检查密钥存在:

if _, ok:= b[key]; ok

示例:

var (
    a = map[string]int{
        "alpha": 34, "bravo": 56, "charlie": 23,
        "delta": 87, "echo": 56, "foxtrot": 12, "golf": 34, "hotel": 16,
        "indio": 87, "juliet": 65, "kilo": 43, "lima": 98}

    b = map[string]int{
        "alpha": 34, "one": 56, "charlie": 23,
        "insdio": 87, "julietta": 65, "kilo": 43, "lima": 98}
)

func main() {
    for key, _ := range a {
        if _, ok:= b[key]; ok {         
            fmt.Printf("%s\n", key)
        }
    }   
}

Playground Example 1

或者您可以检查第一张地图中的键值是否与第二张地图中的值相对应:

for key, val := range a {
    if val == b[key] {          
        fmt.Printf("%s\n", key)
    }
}

Playground Example 2

但第一个是惯用的方式。