0
0

Go:map型の変数にキーが存在するかどうかを判定

Posted at

はじめに

map型の変数にキーが存在するかどうかを判定するためのコードを作りました。
理解するのに役立つと思うので、「1. 判定処理、2. 実行結果」の部分を見てみてください。
それに続いて、「3. IF文を使った判定処理、4. 実行結果」のセクションでは、少し複雑なコードを紹介しています。

1. 判定処理

package main

import (
	"fmt"
)

func main() {
	seen := make(map[int]string)

	// キー1に対して値を設定
	seen[1] = "存在する1"

	// キー2に対して値を設定
	seen[2] = "存在する2"

	// キー3は設定しない

	// キー1の確認
	value, exists := seen[1]
	fmt.Println("Key 1: Value =", value, "/ Exists =", exists)

	// キー2の確認
	value, exists = seen[2]
	fmt.Println("Key 2: Value =", value, "/ Exists =", exists)

	// キー3の確認
	value, exists = seen[3]
	fmt.Println("Key 3: Value =", value, "/ Exists =", exists)
}

2. 実行結果

Key 3は、存在しないため、Valueは、string型のデフォルト値:空値となります。

Key 1: Value = 存在する1 / Exists = true
Key 2: Value = 存在する2 / Exists = true
Key 3: Value =  / Exists = false

3. IF分を使った判定処理

package main

import (
	"fmt"
)

func main() {
	seen := make(map[int]bool)

	// 事前にいくつかのキーをマップに設定
	seen[1] = true
	seen[3] = true
	seen[5] = true

	// 異なる値を含むスライスを定義
	numbers := []int{1, 2, 3, 4, 5, 6}

	// range: スライスの要素数分ループ
	for _, v := range numbers {
		if _, boolean := seen[v]; boolean { // booleanは、trueかfalseを返す
			fmt.Println("数字", v, "はseenマップに存在します。")
		} else {
			fmt.Println("数字", v, "はseenマップに存在しません。")
		}
	}

}

4. 実行結果

numbersに存在する数値が、seenに存在するかどうかを判定した処理です。

数字 1 はseenマップに存在します
数字 2 はseenマップに存在しません
数字 3 はseenマップに存在します
数字 4 はseenマップに存在しません
数字 5 はseenマップに存在します
数字 6 はseenマップに存在しません
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0