マップの反復処理
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: 12Goでは、rangeがマップのエントリを訪れる順序は保証されないため、ループを実行するたびに、これらの行が異なる順序で出力されることがあります。
キーだけが必要な場合は、2つ目の変数を省略できます。
for fruit := range inventory {
fmt.Println(fruit)
}チャレンジ
初心者このチャレンジでは、Goのrangeキーワードを使ってマップを反復処理する練習をします。生徒の成績を格納したマップはあらかじめ用意されています。マップを反復処理して、各生徒の名前と成績を出力してください。
studentGradesマップを反復処理し、各生徒の名前と成績を次の形式で出力するコードを完成させてください:Student: [name], Grade: [grade]
自分で試してみよう
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]"
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Goオンラインコンパイラ