マップの反復処理
CoddyのGOジャーニー「基礎」セクションの一部 — レッスン 92/109。
rangeキーワードを使用すると、マップ内のすべてのキーと値のペアを反復処理できます。各エントリに対して、キーと値の両方を返します。
果物の在庫のマップを作成します:
inventory := map[string]int{
"apples": 5,
"bananas": 8,
"oranges": 12,
}
for fruit, quantity := range inventory {
fmt.Printf("%s: %d\n", fruit, quantity)
}結果には、各キーと値のペアが表示されます:
apples: 5
bananas: 8
oranges: 12キーのみが必要な場合は、2番目の変数を省略できます:
for fruit := range inventory {
fmt.Println(fruit)
}チャレンジ
初心者このチャレンジでは、Goのrangeキーワードを使用してマップを反復処理する練習をします。生徒の成績のマップが作成されています。あなたのタスクは、マップを反復処理し、各生徒の名前と成績を出力することです。
studentGradesマップを反復処理し、各生徒の名前と成績をStudent: [name], Grade: [grade]という形式で出力するようにコードを完成させてください。
チートシート
range を使用して、マップ内のキーと値のペアを反復処理します。
inventory := map[string]int{
"apples": 5,
"bananas": 8,
"oranges": 12,
}
for fruit, quantity := range inventory {
fmt.Printf("%s: %d\n", fruit, quantity)
}キーのみを反復処理するには、2番目の変数を省略します。
for fruit := range inventory {
fmt.Println(fruit)
}自分で試してみよう
package main
import (
"fmt"
"sort"
)
func main() {
// 学生の成績のマップ
studentGrades := map[string]string{
"Alice": "A",
"Bob": "B",
"Charlie": "B+",
"David": "A-",
"Eva": "C",
}
// 学生の名前(キー)をスライスに集めてソートする
var names []string
for name := range studentGrades {
names = append(names, name)
}
sort.Strings(names)
// TODO: ソートされた学生の名前のリストをループで回し、
// 各学生の名前と成績を以下の形式で出力してください:
// "Student: [name], Grade: [grade]"
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。