はじめに
Go言語を学ぶと必ず出てくるのが
👉「配列」と「スライス」です。
「何が違うの?」
「どっちを使えばいいの?」
👉 この記事では、配列とスライスの違いを初心者でも理解できるように解説します。
配列とは?(基本)
配列とは「同じ型のデータを固定数でまとめる箱」です。
var nums [3]int = [3]int{1, 2, 3}
ポイント
- 要素数が固定(3個)
- サイズ変更できない
👉 シンプルだが柔軟性は低い
スライスとは?(超重要)
スライスは「可変長の配列」です。
nums := []int{1, 2, 3}
ポイント
- サイズ変更できる
- 実務でほぼこれを使う
👉 Goの核心機能のひとつ
配列とスライスの違い(結論)
| 比較項目 | 配列 | スライス |
|---|---|---|
| サイズ | 固定 | 可変 |
| 使いやすさ | △ | ◎ |
| 実務使用 | ほぼ使わない | よく使う |
| 宣言方法 | [3]int | []int |
👉 迷ったらスライスでOK
スライスの基本操作
追加(append)
nums := []int{1, 2}
nums = append(nums, 3)
👉 要素を追加できる
要素の取得
fmt.Println(nums[0])
長さと容量
fmt.Println(len(nums)) // 長さ
fmt.Println(cap(nums)) // 容量
👉 パフォーマンスに関係
スライスの仕組み(重要)
スライスは内部的に👇
- 配列への参照
- 長さ
- 容量
👉 つまり「軽い参照型」
スライスの切り出し
nums := []int{1,2,3,4}
sub := nums[1:3]
👉 結果:2,3
配列の使いどころ
✔ サイズが固定
✔ メモリを厳密に扱う
👉 低レベル処理や特殊用途
スライスの使いどころ
✔ データを増減する
✔ リスト処理
👉 Web開発・API・ほぼ全部
初心者がつまずくポイント
❌ 配列とスライスを混同
var a [3]int
var b []int
👉 別物です
❌ appendの戻り値を使わない
append(nums, 3) ← NG
👉 必ず再代入
❌ 範囲外エラー
nums[10] ← エラー
実践サンプル
package main
import "fmt"
func main() {
nums := []int{1,2,3}
nums = append(nums, 4)
for _, v := range nums {
fmt.Println(v)
}
}
👉 実務でよく使う形
学習のコツ
- appendを使いまくる
- rangeとセットで覚える
- 実際に動かす
👉 スライスは「慣れ」が全て
まとめ|スライスが最重要
Go言語では👇
✔ 配列 → 固定
✔ スライス → 可変(メイン)
👉 ほぼスライスを使う


コメント