← Go コース
20. スライス — 可変長の並び(len と cap)
スライスは、土台となる配列の一部分を指し示す軽量なビューです。要素数を型に含めないので [int] ではなく []int と書き、配列と違って長さを動的に扱えます。a[low:high] のように既存の配列やスライスを切り出して作ると、low から high-1 までの要素を共有して参照します。
スライスには長さ(len)と容量(cap)という二つの情報があります。len は今アクセスできる要素数、cap は土台の配列のうちスライスの先頭から末尾までに収まる要素数です。切り出しの範囲を high 側に広げると、cap の範囲内であれば len を増やせます。スライスは値ではなく土台配列への参照を持つので、コピーしても同じ配列を指す点が配列と大きく違います。
スライスのゼロ値は nil で、len も cap も 0 です。nil のスライスはまだ要素を持たないだけで、後述の append で要素を足していけます。まずは「配列が実体、スライスはその窓」というイメージを持っておくと、この後の append の挙動が理解しやすくなります。
▶ サンプルコードを実行してみよう(自由に書き換えてOK)
Go