Go でマップにキーが含まれているかどうかを確認する方法

Suraj Joshi 2023年1月30日
  1. Go のマップ map の構造
  2. Go mapkey を確認する
Go でマップにキーが含まれているかどうかを確認する方法

ハッシュテーブルは、Gomap データ型として実装されています。Go のマップは、順序付けられていないキーと値のペアのコレクションとして表示できます。マップ map は、高速な検索、追加、削除を実行できるため、Go で最も強力で用途の広いデータ型の 1つです。mapkey の値を取得しようとすると、2つの戻り値を取得します。2 番目の値が true の場合、keymap に存在します。

Go のマップ map の構造

map の構文

var map_name map[KeyType]ValueType

ここで、KeyType は比較可能な任意の datatype であり、ValueTypemap 自体を含む任意の datatype でもあります。map 内のすべての keysdatatype は同じでなければなりません。同様に、map 内のすべての valuesdatatype も同じである必要があります。ただし、keysdatatypevaluesdatatype は異なる場合があります。

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_1keysvalues の両方に string データ型を持っています。map_1 では、Sthapit はキー Jenna の値です。

Go mapkey を確認する

Go map でに key が含まれているかどうかを確認する構文

first_value, second_value := map_name[key_name]

上記のステートメントは、2つの値を返します。first_valuesecond_valuefirst_valuekey の値を与えます。map_namekey_name が含まれていない場合、first_value はデフォルトのゼロ値になります。同様に、second_value はブール値で、key_namemap に存在する場合に true になります。first_valuesecond_value を異なる方法で解釈して、map_namekey_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 が存在するため、0second_valuetrue です。ただし、キー9map_name に存在しないため、9second_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 ステートメントを使用して、mapkey が存在するかどうかを確認しました。Girikey であり、Sthapitmap_namekey ではありません。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

関連記事 - Go Map