如何在Go(Golang)中检查一个地图是否包含一个键?

82 阅读1分钟

下面是检查地图中是否存在一个键的格式

val, ok := mapName[key]

这里有两种情况

  • 如果键存在,val变量是该键在地图中的值,ok变量为true。
  • 如果键不存在,val变量将是默认的零值类型,ok变量将是false。

让我们看一个例子

package main

import "fmt"

func main() {
    //Declare
    employeeSalary := make(map[string]int)

    //Adding a key value
    employeeSalary["Tom"] = 2000
    fmt.Println("Key exists case")
    val, ok := employeeSalary["Tom"]
    fmt.Printf("Val: %d, ok: %t\n", val, ok)
    fmt.Println("Key doesn't exists case")

    val, ok = employeeSalary["Sam"]
    fmt.Printf("Val: %d, ok: %t\n", val, ok)
}

输出

Key exists case
Val: 2000, ok: true
Key doesn't exists case
Val: 0, ok: false

在上面的程序中,当一个键存在时,val变量被设置为实际值,即2000,ok变量为真。当键不存在时,val变量被设置为0,也就是int的默认零值,ok变量为假。这个ok变量是检查键是否存在于地图中的最好方法。

如果我们只想检查键是否存在而不需要val,那么可以用空白标识符即"_"来代替val。

_, ok = employeeSalary["Sam"]