如何在 Go 語言中檢查 map 中是否存在某個鍵?


我們知道 **Go** 中的 **map** 包含鍵值對。經常會出現我們需要知道某個鍵是否存在於 map 中的情況,在這種情況下,我們有兩個可用的選項。

  • 第一種方法非常簡單,在這種方法中,我們基本上使用 **range** 語句迭代 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)
}

在上面的程式碼中,

  • 我們聲明瞭一個名為 **m** 的 map,它包含資料型別為 **string** 的鍵和資料型別為 **integer** 的值。

  • 然後我們使用 **for** 迴圈中的 **range** 語句迭代 map 中的所有鍵,並在該迴圈內,我們迭代鍵,然後將每個鍵與我們想要檢查的鍵進行比較。

不建議使用上述方法,因為 map 的大小可能更大,這反過來會增加解決方案的時間複雜度。

輸出

如果我們使用命令 **go run main.go** 執行上述程式碼,那麼我們將在終端中獲得以下輸出。

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

一個更好的方法是使用 **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")
   }
}

在上面的程式碼中,

  • 我們只需使用 **if** 條件並檢查值,就像從陣列中獲取值一樣。

  • 但我們不是傳遞索引,而是傳遞鍵,然後結果將儲存在名為 **ok** 的變數中。

  • 然後我們將 **ok** 條件附加到它,如果鍵存在,我們將獲得結果,否則我們將獲得“它不存在”。

輸出

如果我們使用命令 **go run main.go** 執行上述程式碼,那麼我們將在終端中獲得以下輸出。

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

更新於: 2022年2月21日

796 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.