キーの存在確認
CoddyのGOジャーニー「基礎」セクションの一部 — レッスン 89/109。
Goでは、2つの値を受け取る代入形式を使用して、マップ内にキーが存在するかどうかを確認できます。存在しないキーにアクセスするとゼロ値が返され、紛らわしい場合があるため、これは重要です。
国コードのマップを作成します:
countries := map[string]string{
"US": "United States",
"CA": "Canada",
}
// マップ内に "UK" が存在するか確認します
value, exists := countries["UK"]
fmt.Println("Value:", value, "Exists:", exists)結果:
Value: Exists: falseexists ブール値は、キーが見つかったかどうかを示します。これを条件分岐で使用します:
if _, exists := countries["US"]; exists {
fmt.Println("US is in the map")
}結果:
US is in the mapチャレンジ
初心者このチャレンジでは、マップ内にキーが存在するかどうかを確認する練習をします。生徒の成績のマップがあり、特定の生徒の成績がマップ内に存在するかどうかを確認する必要があります。
生徒 'Emma' が grades マップに存在するかどうかを確認し、適切なメッセージを出力するようにコードを完成させてください。
チートシート
2つの値の代入を使用して、マップ内にキーが存在するかどうかを確認します:
value, exists := mapName["key"]2番目の値は、キーが見つかったかどうかを示すブール値です:
countries := map[string]string{
"US": "United States",
"CA": "Canada",
}
value, exists := countries["UK"]
fmt.Println("Value:", value, "Exists:", exists)
// Output: Value: Exists: false_ を使用して値を無視することで、条件文で使用します:
if _, exists := countries["US"]; exists {
fmt.Println("US is in the map")
}自分で試してみよう
package main
import "fmt"
func main() {
// 学生の成績のマップ
grades := map[string]int{
"John": 85,
"Sarah": 92,
"Mike": 78,
"Lisa": 95,
}
// 確認する学生
studentToCheck := "Emma"
// TODO: studentToCheck が grades マップに存在するかどうかを確認し、
// その結果を 'exists' という変数に格納してください。
// ヒント: comma-ok イディオムを使用してください。
// 結果を出力
if exists {
fmt.Printf("%s's grade exists in the map\n", studentToCheck)
} else {
fmt.Printf("%s's grade does not exist in the map\n", studentToCheck)
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。