カテゴリ: Go言語 更新日: 2025/08/26

Go言語のスライスと配列の使い分け!それぞれのメリット・デメリット

Go言語のスライスと配列の使い分け!それぞれのメリット・デメリット
Go言語のスライスと配列の使い分け!それぞれのメリット・デメリット

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

生徒

「先生、Go言語にはスライスと配列という似たものがありますけど、どう違うんですか?どちらを使えばいいか迷います。」

先生

「いい質問です。スライスと配列は似ていますが、使い方や特徴が違います。簡単にいうと、配列はサイズが固定された箱で、スライスはその箱を柔軟に使える便利な道具です。」

生徒

「サイズが固定の箱と柔軟な道具って、具体的にどういうことですか?」

先生

「それでは、それぞれの特徴やメリット・デメリットを詳しく説明しますね!」

1. 配列とは?サイズが決まった固定の箱

1. 配列とは?サイズが決まった固定の箱
1. 配列とは?サイズが決まった固定の箱

配列は、あらかじめ決まったサイズの箱に物を入れるイメージです。たとえば、10個分の仕切りがあるお弁当箱のようなもので、サイズを変えられません。

Go言語の配列は、宣言時にサイズを決めて、そのサイズのまま使います。例えば、5つの整数を入れる配列は次のように書きます。


var numbers [5]int

この配列は必ず5つの整数を持ちます。サイズ変更はできません。

2. スライスとは?サイズが変えられる柔軟な道具

2. スライスとは?サイズが変えられる柔軟な道具
2. スライスとは?サイズが変えられる柔軟な道具

スライスは配列の一部を切り取ったり、サイズを動的に変えたりできる便利な機能です。お弁当箱の例でいうと、仕切りが伸び縮みする弁当箱のようなものです。

Go言語でスライスを作るときは、次のように書きます。


fruits := []string{"りんご", "バナナ", "みかん"}

このスライスは3つの要素を持ちますが、あとから要素を追加したり減らしたりできます。

3. 配列のメリット・デメリット

3. 配列のメリット・デメリット
3. 配列のメリット・デメリット
  • メリット:サイズが固定なので、メモリの管理が明確で高速に動くことが多いです。
  • デメリット:サイズが固定なので、要素数が変わるデータには不向きです。また、サイズ変更のために新たな配列を作り直す必要があります。

配列は例えば、固定の大きさの机の引き出しにものを入れるようなイメージです。引き出しの大きさは変えられません。

4. スライスのメリット・デメリット

4. スライスのメリット・デメリット
4. スライスのメリット・デメリット
  • メリット:サイズが動的に変えられるため、要素数が変わるデータに便利です。使いやすくてGo言語で最もよく使われます。
  • デメリット:内部で配列を使っているため、メモリ確保やコピーが発生することがあり、場合によってはパフォーマンスに影響が出ることがあります。

スライスは、伸縮自在の引き出しのように考えると分かりやすいでしょう。必要に応じて大きくしたり小さくしたりできます。

5. 使い分けのポイント

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

初心者がGo言語でプログラミングを始めるときは、

  • データの数が固定なら配列
  • データの数が変わる可能性があるならスライス

を意識するとよいでしょう。

実際にはスライスが圧倒的に使いやすくて多用されているので、ほとんどの場面でスライスを使うことになります。

6. 配列とスライスのコード例

6. 配列とスライスのコード例
6. 配列とスライスのコード例

配列とスライスの違いをコードで見てみましょう。


// 配列(サイズ固定)
var arr [3]int = [3]int{10, 20, 30}
fmt.Println("配列:", arr)

// スライス(サイズ可変)
slice := []int{10, 20, 30}
fmt.Println("スライス:", slice)

slice = append(slice, 40) // 要素を追加
fmt.Println("追加後のスライス:", slice)

配列は要素数3で固定ですが、スライスはappendで要素を簡単に追加できます。

7. スライスの内部は配列

7. スライスの内部は配列
7. スライスの内部は配列

実はスライスは内部で配列を参照しているだけです。スライス自体は配列の「一部」を指すような仕組みです。

このため、スライスを使うときは配列のサイズ制限を気にせずにデータを扱えます。

8. 配列を使う場面は限定的

8. 配列を使う場面は限定的
8. 配列を使う場面は限定的

Go言語では配列を使う場面はあまり多くありません。たとえば、決まったサイズのデータを扱う特別な処理や、性能を極限まで追求したい場合です。

それ以外はスライスを使うことをおすすめします。

カテゴリの一覧へ
新着記事
Go言語の構造体でインターフェースを実装する方法を初心者向けにやさしく解説!
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
Go言語の文字列フォーマット!fmt.Sprintfで簡単に出力を整形する方法
Go言語のエラーと例外の違いを初心者向けに整理!わかりやすく解説
人気記事
No.1
Kotlin・Go・Swift記事の人気No1
Swiftのwhile文とrepeat while文を完全マスター!初心者にもわかる繰り返し処理の使い方と違い
No.2
Kotlin・Go・Swift記事の人気No2
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.3
Kotlin・Go・Swift記事の人気No3
Swift入門ガイド|基本構文と書き方をマスターしよう
No.4
Kotlin・Go・Swift記事の人気No4
Kotlinの正規表現(Regex)の使い方をやさしく解説!文字列操作の基本を初心者向けに学ぼう
No.5
Kotlin・Go・Swift記事の人気No5
Kotlinで画面を作る!レイアウトXMLとビューの基本操作をやさしく解説
No.6
Kotlin・Go・Swift記事の人気No6
Kotlinのコンパニオンオブジェクトとは?初心者向けに使い方と役割をわかりやすく解説!
No.7
Kotlin・Go・Swift記事の人気No7
Kotlinのwhen式を完全ガイド!初心者でもわかるパターンマッチング的な使い方
No.8
Kotlin・Go・Swift記事の人気No8
Swiftのオプショナル型とは?初心者でもわかる使い方とアンラップの基礎