如何在 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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP