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