Go でマップにキーが含まれているかどうかを確認する方法
 
ハッシュテーブルは、Go に map データ型として実装されています。Go のマップは、順序付けられていないキーと値のペアのコレクションとして表示できます。マップ map は、高速な検索、追加、削除を実行できるため、Go で最も強力で用途の広いデータ型の 1つです。map の key の値を取得しようとすると、2つの戻り値を取得します。2 番目の値が true の場合、key は map に存在します。
Go のマップ map の構造
    
map の構文
var map_name map[KeyType]ValueType
ここで、KeyType は比較可能な任意の datatype であり、ValueType も map 自体を含む任意の datatype でもあります。map 内のすべての keys の datatype は同じでなければなりません。同様に、map 内のすべての values の datatype も同じである必要があります。ただし、keys の datatype と values の datatype は異なる場合があります。
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 は keys と values の両方に string データ型を持っています。map_1 では、Sthapit はキー Jenna の値です。
Go map で key を確認する
Go map でに key が含まれているかどうかを確認する構文
first_value, second_value := map_name[key_name]
上記のステートメントは、2つの値を返します。first_value と second_value。first_value は key の値を与えます。map_name に key_name が含まれていない場合、first_value はデフォルトのゼロ値になります。同様に、second_value はブール値で、key_name が map に存在する場合に true になります。first_value と second_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
ここでは、map_name にキー 0 が存在するため、0 の second_value は true です。ただし、キー9 が map_name に存在しないため、9 の second_value は false です。
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 は key であり、Sthapit は map_name の key ではありません。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn