カテゴリ: Go言語 更新日: 2026/01/10

Go言語のスライス・マップ・配列をまとめて比較してみよう!初心者でもわかる使い分けの基本

Go言語のスライス・マップ・配列をまとめて比較してみよう
Go言語のスライス・マップ・配列をまとめて比較してみよう

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

生徒

「先生、Go言語でスライス、マップ、配列ってありますけど、それぞれどう違うんですか?どれを使えばいいのか迷います…」

先生

「良い質問です。スライス、マップ、配列はデータをまとめて扱うときに使う構造ですが、特徴や使い方が違います。今回はそれぞれの違いをわかりやすく説明しますね。」

生徒

「ぜひお願いします!具体的にどう違うのか知りたいです。」

先生

「では、基本的なことから順番に説明していきましょう!」

1. 配列(Array)とは?

1. 配列(Array)とは?
1. 配列(Array)とは?

配列は「同じ種類のデータを決まった数だけ並べた箱」のようなものです。サイズ(要素数)が決まっていて変わらないことが特徴です。

例えば、5つの整数を保存したいときは、5個分の箱を用意し、その中に値を順番に入れます。

配列は使うときにサイズを決めて固定するので、大きさを途中で変えられません。


var arr [5]int // 整数型の要素が5つの配列
arr[0] = 10    // 1番目の要素に10を入れる

配列のサイズは固定なので、あとから要素を増やしたり減らしたりはできません。

2. スライス(Slice)とは?

2. スライス(Slice)とは?
2. スライス(Slice)とは?

スライスは「配列のサイズが決まっていない、もっと自由に使える箱」のようなものです。必要に応じてサイズが増えたり減ったりします

配列の便利な点は残しつつ、サイズ変更が簡単にできるので、よく使われます。


var slice []int       // 整数型のスライス(サイズは決まっていない)
slice = append(slice, 10) // 値を追加

append関数を使うと、新しい要素を簡単にスライスに追加できます。

スライスは内部的に配列を使っていますが、サイズ変更が自由なので、柔軟に扱えます。

3. マップ(Map)とは?

3. マップ(Map)とは?
3. マップ(Map)とは?

マップは「キー(名前)と値をセットにして保存する箱」のようなものです。英語で「連想配列」とも呼ばれます。

数字の順番ではなく、好きな名前(キー)で値を取り出せるので便利です。


var m map[string]int
m = make(map[string]int) // マップの作成
m["apple"] = 100         // "apple"というキーに100をセット

たとえば、「りんご」という名前で値を保存し、あとで「りんご」の値だけを取り出せます。

4. 配列・スライス・マップの違いを表で比べてみよう

4. 配列・スライス・マップの違いを表で比べてみよう
4. 配列・スライス・マップの違いを表で比べてみよう
特徴 配列 スライス マップ
サイズ 固定(変更不可) 可変(増減可能) 可変(キーと値のセット)
データの順番 順番が決まっている 順番が決まっている 順番は保証されない
要素のアクセス方法 番号(インデックス)でアクセス 番号(インデックス)でアクセス キー(名前)でアクセス
使いどころ サイズが固定で要素数が決まっている場合 要素数が変わる可能性がある場合 名前付きのデータを扱いたい場合
初期化 宣言時にサイズ指定 宣言後にmakeやリテラルで初期化 make関数で初期化必須

5. どんなときに何を使う?

5. どんなときに何を使う?
5. どんなときに何を使う?

それぞれの特徴を踏まえて、よくある使い分け例を紹介します。

  • 配列:小さくてサイズが変わらないデータ。例えば曜日の名前など。
  • スライス:動的に増減するデータ。例えばユーザーが追加できるリスト。
  • マップ:名前(キー)で値を管理。例えば商品の名前と価格の対応表。

6. まとめてコード例を見てみよう

6. まとめてコード例を見てみよう
6. まとめてコード例を見てみよう

package main

import "fmt"

func main() {
    // 配列
    var arr [3]string
    arr[0] = "りんご"
    arr[1] = "みかん"
    arr[2] = "バナナ"
    fmt.Println("配列:", arr)

    // スライス
    slice := []string{"りんご", "みかん"}
    slice = append(slice, "バナナ")
    fmt.Println("スライス:", slice)

    // マップ
    m := make(map[string]int)
    m["りんご"] = 100
    m["みかん"] = 80
    fmt.Println("マップ:", m)
}

このコードでは、配列はサイズが決まっていて、スライスは要素を追加でき、マップは名前(キー)で値を管理しているのがわかります。

7. 使い分けのポイント

7. 使い分けのポイント
7. 使い分けのポイント

Go言語の配列・スライス・マップはどれも大切なデータ構造です。使い分けのポイントは、

  • データのサイズが決まっているか
  • 順番が重要か
  • 名前でアクセスしたいか

を考えて選びましょう。

まとめ

まとめ
まとめ

Go言語の配列やスライスやマップは、どれもデータをまとめて扱うための大切な仕組みであり、初心者が最初につまずきやすい部分でもあります。とくに配列は要素数が固定される特徴があり、スライスはサイズが自由に増減できる柔軟さを持ち、マップは名前による管理ができる便利な構造です。これらを正しく理解することで、データ操作の幅が大きく広がり、実践的なプログラムの設計がぐっと楽になります。配列は決まった数のデータを扱うときに向いており、スライスはユーザーが自由に追加できるリストなどのように変化のある場面で役立ちます。さらにマップは商品の名前や会員情報やカテゴリ名など「キーと値の組み合わせ」を扱うときに使われ、非常に多くの処理で利用されます。

初心者が混乱しやすいのは、配列とスライスが似ている点ですが、内部の仕組みが異なるため、使い分けを理解することが大切です。スライスは内部に配列を持っていますが、サイズが自動的に変わり、appendを使うことで簡単に値を追加できます。これにより、スライスはGo言語で最も頻繁に使われるデータ構造となっています。一方、配列はサイズが変わらないという制約があるため、実務ではあまり多用されませんが、メモリ管理や固定データの扱いにおいて重要な役割を持ちます。マップは名前でアクセスできるため非常に便利ですが、順番が保証されないという特徴があり、並び順が必要なプログラムでは注意が必要です。

また、配列やスライスやマップを使った処理では、for文やレンジ構文や条件分岐など基本的な構文と組み合わせることで、より複雑な処理が可能になります。特にスライスとマップは、実際のアプリケーション開発において入力データや結果の保持や情報の管理に欠かせない存在です。配列は学習用として理解しておくことでスライスの仕組みを深く知ることができ、それが後々大きな理解につながります。さらにマップはWebアプリケーションでの設定情報、商品リスト、ユーザー情報など、ありとあらゆる場面で使われるため、初心者のうちに慣れておくと必ず役に立ちます。

ここではまとめとして、配列とスライスとマップの特徴を簡潔に整理し、より実践的なコード例も少し紹介します。大切なのは「どの場面でどの構造を選ぶべきか」を自分で判断できるようになることです。データの数が固定なら配列、増える可能性があるならスライス、名前で管理したいならマップという三つの軸を意識すると、適切な選択が自然にできるようになります。実際のプログラムを書くときには、これらの特徴をふまえて組み合わせることで、より読みやすく、より使いやすいコードになります。

まとめとしてのサンプルプログラム


package main

import "fmt"

func main() {
    fruits := [3]string{"りんご", "みかん", "バナナ"}
    fmt.Println("配列:", fruits)

    list := []string{"りんご", "みかん"}
    list = append(list, "バナナ")
    fmt.Println("スライス:", list)

    table := make(map[string]int)
    table["りんご"] = 120
    table["みかん"] = 90
    fmt.Println("マップ:", table)
}

このサンプルでは配列で固定データを扱い、スライスで可変データを追加し、マップで名前と値を管理するという典型的な使い分けを示しています。これらの構造を繰り返し使うことで、自然と自分の中にデータ構造の理解が定着していきます。どのデータ構造を使うか迷ったときは、用途や性質に応じて判断し、まずは簡単なコードで手を動かすことが理解への近道になります。実際の開発でも頻繁に登場するスライスやマップを早い段階で使いこなせるようになると、プログラムの表現力が大幅に高まり、より複雑なデータ処理にも挑戦できるようになります。

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

生徒
「今日学んだ配列やスライスやマップの違いがだいぶわかってきました。特にスライスが一番使いやすくて便利だと感じました。」

先生
「そうですね。スライスは可変で扱いやすいのでGo言語の実務でもよく使われます。配列は決まった数のデータに向いていて、マップは名前で値を管理したいときにとても役立ちます。」

生徒
「マップは順番が決まらないという特徴も勉強になりました。キーで管理する仕組みはアプリ開発でもよく使われそうですね。」

先生
「そのとおりです。配列とスライスとマップを正しく使い分けられるようになると、データ構造の理解が深まり、より読みやすく効率的なコードが書けるようになりますよ。」

生徒
「次はこれらを組み合わせてもっと複雑な処理にも挑戦してみたいです!」

先生
「ぜひ挑戦してみてください。今日学んだ基礎は必ず役に立つので、自信を持って書いていきましょう。」

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

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

※ Amazon広告リンク

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Go言語で配列とスライスの違いは何ですか?初心者にもわかりやすく教えてください。

Go言語における配列はサイズが固定されていて、あとから要素を追加できません。一方、スライスはサイズが柔軟に変化でき、append関数で簡単に要素を追加できます。初心者にはスライスの方が扱いやすくおすすめです。
関連セミナーのご案内

【超入門】ゼロから始める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
Swift
Swiftのswitch文の使い方|初心者でもわかるパターンマッチング徹底解説
New3
Kotlin
Kotlinの認証と認可を完全解説!初心者でもわかる安全なログイン管理とセキュリティ対策
New4
Go言語
Go言語の関数でエラーハンドリングする基本的な方法
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.4
Java&Spring記事人気No4
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.5
Java&Spring記事人気No5
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.6
Java&Spring記事人気No6
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.7
Java&Spring記事人気No7
Kotlin
Kotlinの文字列の部分取得!substring・take・dropの基本
No.8
Java&Spring記事人気No8
Go言語
Go言語でミドルウェアを作成する方法と活用例!初心者でもわかるWebアプリ開発