カテゴリ: Go言語 更新日: 2025/12/10

Go言語のマップのループ処理!rangeを使った便利な操作例

Go言語のマップのループ処理!rangeを使った便利な操作例
Go言語のマップのループ処理!rangeを使った便利な操作例

先生と生徒の会話形式で理解しよう

生徒

「先生、Go言語でマップの中に入っている全部のデータを順番に処理する方法ってありますか?」

先生

「はい、Go言語ではrangeというキーワードを使って、マップの中身を簡単にループ処理できますよ。」

生徒

「具体的にどんなふうに使うんですか?使い方や便利なコツも教えてほしいです!」

先生

「わかりました。それでは、基本から丁寧に説明していきますね!」

1. Go言語のマップとは?

1. Go言語のマップとは?
1. Go言語のマップとは?

マップは「キー」と「値」をセットで保存できるデータの入れ物です。例えば、果物の名前をキーにして、その色を値として保存できます。

プログラムの中で、たくさんのデータを整理するときに便利なデータ構造です。

2. rangeとは何?ループ処理の基本

2. rangeとは何?ループ処理の基本
2. rangeとは何?ループ処理の基本

rangeはGo言語で使われる「繰り返し処理(ループ)」のためのキーワードです。配列やスライス、マップなどの中のデータを一つずつ取り出すことができます。

マップの場合、キーと値を同時に取り出せるので、とても便利です。

3. マップをrangeでループする基本的な書き方

3. マップをrangeでループする基本的な書き方
3. マップをrangeでループする基本的な書き方

マップの中身を繰り返し処理する基本のコードは以下のようになります。


for キー, 値 := range マップ名 {
    // キーと値を使った処理
}

ここで「:=」は「新しい変数を作るよ」という意味です。ループの中でキーと値を一つずつ取り出しています。

4. 実際のコード例で見てみよう

4. 実際のコード例で見てみよう
4. 実際のコード例で見てみよう

package main

import "fmt"

func main() {
    fruits := map[string]string{
        "apple":  "りんご",
        "banana": "バナナ",
        "grape":  "ぶどう",
    }

    for key, value := range fruits {
        fmt.Printf("キー: %s, 値: %s\n", key, value)
    }
}

このプログラムでは、マップfruitsの中のキー(英語の果物名)と値(日本語の果物名)を一つずつ取り出して表示しています。

5. 便利な使い方:キーだけ、値だけを使いたいとき

5. 便利な使い方:キーだけ、値だけを使いたいとき
5. 便利な使い方:キーだけ、値だけを使いたいとき

マップのループで「キーだけ」使いたいときや「値だけ」使いたいときもありますよね。

その場合、使わない方の変数を「_(アンダースコア)」にすることで無視できます。


// キーだけ使いたいとき
for key := range fruits {
    fmt.Println("キー:", key)
}

// 値だけ使いたいとき
for _, value := range fruits {
    fmt.Println("値:", value)
}

このように書くことで、不要な変数が増えずにコードがすっきりします。

6. ループの順番は決まっていないことに注意

6. ループの順番は決まっていないことに注意
6. ループの順番は決まっていないことに注意

マップのループは、キーの順番が決まっていません。つまり、毎回同じ順番でデータが取り出されるわけではありません。

順番が必要な場合は、キーを一度スライスに取り出して並べ替えるなどの工夫が必要です。

7. マップのループ処理の便利な応用例

7. マップのループ処理の便利な応用例
7. マップのループ処理の便利な応用例

マップのループ処理は、データの集計や条件に合わせた処理にも使えます。例えば、特定の条件に合うキーや値だけを取り出したり、合計を計算したりできます。


count := 0
for _, value := range fruits {
    if value == "バナナ" {
        count++
    }
}
fmt.Println("バナナの数:", count)

この例では、「バナナ」が何個あるか数えています。

8. rangeを使ったマップループのポイント

8. rangeを使ったマップループのポイント
8. rangeを使ったマップループのポイント

Go言語のrangeは、マップの中のデータを簡単に一つずつ取り出せる便利な機能です。

キーと値を同時に扱えるので、データの表示や処理がとても楽になります。

また、使わない値は_で無視できるため、コードをすっきり書けます。

ループの順番は決まっていないことだけ注意しながら、色々な場面で活用してみてくださいね。

Go言語を基礎からスッキリ学びたい人や、 文法だけでなく「実用的な使い方」まで押さえたい人には、 定番の入門書がこちらです。

基礎からわかるGo言語をAmazonで見る

※ Amazon広告リンク

まとめ

まとめ
まとめ

ここまで、マップという柔軟なデータ構造と、range を使ったループ処理の基本や応用をじっくり学んできました。マップはキーと値の組み合わせを直感的に扱えるため、日常的なデータ整理や管理に非常に役立ちます。さらに、range を使うことで、格納されているデータを一つずつ丁寧に取り出しながら処理できるため、目的に合わせた操作がしやすくなります。とくに、キーと値を同時に使える特徴や、使わない変数を「_」で無視する便利な書き方は、Go言語ならではの洗練された仕組みと言えるでしょう。

また、ループ処理の順番が固定されていないという性質も忘れてはいけない大切なポイントです。同じマップであっても毎回ループされる順番が異なるため、順序に依存した処理を行いたい場合には注意が必要となります。もし特定の順番で並べ替えたい場合には、一度キーをスライスに取り出し、並べ替えを行ってからマップの値を参照する方法が効果的です。こうした工夫を知っていることで、より柔軟にマップを扱えるようになり、プログラムの見通しや操作の幅が大きく広がります。

range を使ったマップのループ処理は、基本を理解すれば応用の幅もとても広く、条件に合った要素だけを取り出したり、特定の値を集計したりするなどの場面にも活用できます。複雑な構造のデータを扱う際にも役立つため、しっかり身につけておくと Go 言語での開発がますますスムーズになります。以下に、理解を深めるための総まとめとして、小さな応用サンプルコードを紹介します。

マップとrangeを使った応用サンプルコード


package main

import (
    "fmt"
    "sort"
)

func main() {
    fruits := map[string]string{
        "apple":  "りんご",
        "banana": "バナナ",
        "grape":  "ぶどう",
        "lemon":  "レモン",
    }

    fmt.Println("すべての要素を表示:")
    for key, value := range fruits {
        fmt.Printf("キー:%s 値:%s\n", key, value)
    }

    fmt.Println("\nキーを並べ替えて表示:")
    keys := make([]string, 0, len(fruits))
    for key := range fruits {
        keys = append(keys, key)
    }
    sort.Strings(keys)

    for _, key := range keys {
        fmt.Printf("キー:%s 値:%s\n", key, fruits[key])
    }
}

このサンプルのように、range とマップの仕組みをしっかり押さえておけば、データの管理や整形を柔軟に行えるようになります。単純な一覧表示だけでなく、並べ替え・集計・条件抽出など多くの処理を効率よく記述できるため、実践的なプログラムにもすぐに応用できるでしょう。マップの特徴を理解し、range と合わせて正確に活用することで、扱えるデータの幅も広がり、プログラム全体の質も向上していきます。

最後に、今回学んだ内容をしっかり自分の中に定着させるため、先生と生徒の振り返り会話で要点をおさらいしましょう。

先生と生徒の振り返り会話

生徒

「先生、range を使うとマップのデータがすごく扱いやすくなるってよくわかりました!キーと値を同時に取り出せるのが便利ですね。」

先生

「そうなんですよ。マップは自由度が高いデータ構造なので、range と組み合わせることでより扱いやすくなります。」

生徒

「あと、ループの順番が毎回違うっていうのも大事なポイントですね。必要ならキーを並べ替えてから処理すると良いって覚えておきます!」

先生

「その理解はとても大切です。順番に期待した処理を書くとバグの原因になるので、注意して使ってくださいね。」

生徒

「はい!range とマップを使いこなせるように、いろんなパターンを書いて練習してみます。」

関連セミナーのご案内

【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導

「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。

本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。

具体的な開発内容と環境

【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。

【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。

この60分で得られる3つの理解

1. 環境構築の完全な理解

「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。

2. Go言語の基本構造(変数・型)

データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。

3. 読みやすいコードの書き方

ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。

※本講座は、将来的にバックエンドエンジニアクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。

セミナー画像

初めてのGo言語を一緒に学びましょう!

関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.6
Java&Spring記事人気No6
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.7
Java&Spring記事人気No7
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説