はじめに
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マップに存在しません