Dev Study
Go コース

22. make と copy — 長さ・容量を指定して作る

あらかじめ長さや容量が分かっているときは、組み込み関数 make でスライスを作れます。make([]int, length) は length 個のゼロ値で埋めたスライスを、make([]int, length, capacity) は容量も指定して作ります。最初から十分な容量を確保しておくと、append のたびに土台配列を作り直す無駄が減り、効率が良くなります。

スライスを独立してコピーしたいときは組み込み関数 copy を使います。copy(dst, src) は dst の長さと src の長さの小さい方の個数だけ要素をコピーし、コピーした個数を返します。前のレッスンで見た「土台配列の意図せぬ共有」を避けたいときは、make で別のスライスを用意してから copy するのが確実です。

make はスライスのほかにマップやチャネルの生成にも使う、いわば「内部構造を伴う型」を初期化するための関数です。一方、単純な値の型(数値や構造体)には make は使いません。スライスについては「要素数が読めるなら make で先に確保」「独立コピーは copy」と覚えておくと実践で役立ちます。

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

Go
公式ドキュメントで詳しく ↗