如何在 Go 中檢查 map 中是否包含某個鍵

Suraj Joshi 2023年1月30日 2020年6月9日
  1. Go 中 map 資料結構
  2. 在 Go map 中檢查鍵值
如何在 Go 中檢查 map 中是否包含某個鍵

雜湊表在 Go 中作為 map 資料型別實現。Go Maps 可以看作是鍵/值對無序對的集合。Maps 是 Go 語言中功能最強大,用途最廣泛的資料型別之一,因為它們能夠執行快速查詢,新增和刪除操作。當我們嘗試在 map 中獲取 key 值時,我們得到兩個返回值。如果第二個值是 true,則在 map 上顯示 key

Go 中 map 資料結構

map 的語法

var map_name map[KeyType]ValueType

其中,KeyType 是任何可比較的資料型別,ValueType 也是任何的資料型別,包括 map 本身。對映中所有鍵的資料型別必須相同。同樣,對映中所有值的資料型別也必須相同。但是,鍵的資料型別和值的資料型別可以不同。

package main

import "fmt"

func main() {
    map_1 := map[string]string{
        "Jenna": "Sthapit"
    }

    for k, v := range map_1 {
        fmt.Printf("Key:%v\nValue: %s\n", k, v)
    }

}   

輸出:

Key:Jenna
Value: Sthapit

在上面的示例中,map_1 具有鍵和值的字串資料型別。在 map_1 中,Sthapit 是鍵 Jenna 的值。

在 Go map 中檢查鍵值

Go map 中檢查是否包含某鍵

first_value, second_value := map_name[key_name]

上面的語句返回兩個值,即 first_valuesecond_valuefirst_value 給出 key 的值。如果 map_name 不包含 key_name,則 first_value 將是預設的零值。同樣,second_value 是一個布林值,如果 map 中存在 key_name,則為 true。我們可以用不同的方式解釋 first_valuesecond_value,以檢查 map_name 是否包含 key_name

package main

import "fmt"

func main() {
    map_name := map[int]string{
        0: "Alok",
        1: "Reman",
        2: "Riken",
        3: "Rudra",
    }
    _, second_value_1 := map_name[1]
    fmt.Printf("second_value for 1: %t\n", second_value_1)

    _, second_value_9 := map_name[9]
    fmt.Printf("second_value for 9: %t\n", second_value_9)
}   

輸出:

second_value for 1: true
second_value for 9: false

這裡的 0second_valuetrue,因為 map_name 中存在鍵 0。但是,因為 9 的鍵值不在 map_name 中,所以 9 的 second_valuefalse

package main

import "fmt"

func main() {
    map_name := map[string]string{
        "Giri":     "Alok",
        "Nembang":  "Reman",
        "Maharjan": "Riken",
        "Jha":      "Rudra",
    }
    if first_value, second_value := map_name["Giri"]; second_value {
        fmt.Printf("Giri is present in map. Value is: %s\n", first_value)
    } else {
        fmt.Printf("Giri is not present in map.\n")
    }

    if first_value, second_value := map_name["Sthapit"]; second_value {
        fmt.Printf("Sthapit is present in map. Value is: %s\n", first_value)
    } else {
        fmt.Printf("Sthapit is not present in map. \n")
    }
}
   

輸出:

Giri is present in map. Value is: Alok
Sthapit is not present in map.

在此示例中,我們使用了 if 語句來檢查 map 中是否存在 key。Giri 是鍵,而 Sthapit 不是 map_name 的鍵。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

相關文章 - Go Map