Menu
CoddyTech

マップの反復処理

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

Goでは、rangeがマップのエントリを訪れる順序は保証されないため、ループを実行するたびに、これらの行が異なる順序で出力されることがあります。

キーだけが必要な場合は、2つ目の変数を省略できます。

for fruit := range inventory {
    fmt.Println(fruit)
}
challenge icon

チャレンジ

初心者

このチャレンジでは、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]"
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Goオンラインコンパイラ