Go言語における**スライス(slice)**は、可変長の配列のようなデータ構造であり、Goのプログラムにおいて非常に頻繁に使用されます。スライスは、配列に比べて柔軟性が高く、実用的な用途に適しています。
1. 基本構造と特徴
スライスは以下の3つの情報を持つ構造です:
| 項目 | 説明 |
|---|---|
| ポインタ | 元となる配列の要素を指す |
| 長さ(length) | スライスに含まれる要素数 |
| 容量(capacity) | スライスの開始位置から元配列の末尾までの最大要素数 |
スライスは、[]T という形で定義されます(Tは要素の型)。
2. スライスの作成方法
a. 配列から生成
b. make関数を使用
make関数を使用
3. スライスの操作
a. 要素の追加(append)
※ 容量を超えると、新しい内部配列が確保されます(再割り当て)。
b. スライスのコピー(copy)
4. スライスの部分抽出(スライスのスライス)
スライスは元配列とメモリを共有するため、一方を変更すると他方にも影響が出ることに注意が必要です。
5. スライスのゼロ値とnil
6. スライスの内部構造(イメージ)
スライスのlenはアクセス可能な要素数、capはスライス先頭から配列末尾までの長さです。
7. スライスの利点と注意点
利点
-
可変長で柔軟性が高い
-
appendで簡単に拡張可能 -
内部で共有メモリを使うため、効率的
注意点
-
複数のスライスが同じ配列を参照すると、予期せぬ副作用が起きることがある
-
容量を超えてappendされると、新しい配列が生成され、元のスライスとは切り離される
生成日:2025/05/03