Golang 如何检查一个键是否存在于Map中

Golang 如何检查一个键是否存在于Map中

我们知道 Go 中的 Map 包含键值对。在很多情况下,我们会想知道某个键是否存在于Map中,在这种情况下,我们有两种选择。

  • 第一种方法是非常幼稚的,因为在这种方法中,我们基本上是在 范围 子句的帮助下遍历Map,然后将每个键与我们想检查的键进行比较,以确定是否存在。

  • 而第二种方法要好一些,因为我们使用了带有一点语法糖的 if 语句。

让我们先检查一下天真的方法的作用。

例子1

考虑一下下面的代码。

package main
import (
   "fmt"
)
func main() {
   m := make(map[string]int)
   m["mukul"] = 10
   m["mayank"] = 9
   m["deepak"] = 8
   for key := range m {
      if key == "naina" {
         fmt.Println("Key named naina exists in the map")
      }
   }
   fmt.Println("No key named naina is present in the map")
   fmt.Println(m)
}
Go

在上面的代码中。

  • 我们声明了一个名为 m 的Map,它包含 字符串 数据类型的键和 整数 数据类型的

  • 然后我们在 for 循环中使用 range 子句来遍历Map中的所有键,在这个循环中,我们遍历这些键,然后将每个键与我们要检查的键进行比较。

不建议使用上述方法,因为Map的大小可能会更大,这反过来又会增加解决方案的时间复杂性。

输出

如果我们用命令 go run main.go 运行上述代码,那么我们将在终端得到以下输出。

No key named naina is present in the map
map[deepak:8 mukul:10 mayank:9]
Go

一个更好的方法是使用 if 语法来检查Map中是否存在一个特定的值。

例2

考虑一下下面的代码。

package main
import (
   "fmt"
)
func main() {
   m := make(map[string]int)
   m["mukul"] = 10
   m["mayank"] = 9
   m["deepak"] = 8
   fmt.Println(m)
   if _, ok := m["naina"]; ok {
      fmt.Println("The key exists in the map")
   } else {
      fmt.Println("No key named naina in the map")
   }
}
Go

在上面的代码中。

  • 我们只是使用了 if 条件,然后检查值,就像我们从数组中获取一个值一样。

  • 但我们没有传递索引,而是传递了键,然后结果将被存储在名为 ok 的变量中 。

  • 然后,我们将 ok 条件与之相加,如果键存在,那么我们将得到结果,否则我们将得到 “它不存在”。

输出

如果我们用命令 go run main.go 来运行上述代码,那么我们将在终端得到以下输出。

map[mukul:10 mayank:9 deepak:8]
No key named naina in the map
Go

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册