【初心者向け】Go言語の配列とスライスの違い|基礎から完全理解

プログラム

はじめに

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言語では👇

✔ 配列 → 固定
✔ スライス → 可変(メイン)

👉 ほぼスライスを使う

コメント

タイトルとURLをコピーしました