Go について詳しく調べていると、スライスについて聞きます。 「スライスってそもそも何なの?」不思議に思うかもしれません。配列だけでは十分ではないでしょうか?さて、分解してみましょう!スライスは Go のキラー機能です。これらは配列に似ていますが、それよりもはるかに優れており、動的かつ柔軟で、プログラムの必要に応じて拡大および縮小できます。しかし、その過程で落とし穴が 1 つか 2 つあります。すべてを開梱してスライスに精通しましょう!
スライスの中核は配列です。ただし、静的配列とは異なり、スライスは動的です。サイズを変更できるため、データのニーズが予測できない場合に非常に便利です。アイテムのリストがあると想像してください。アイテムが 5 個の場合もあれば、50 個の場合もあります。スライスすればそれは大したことではありません。サイズを変更するだけで、まるで魔法のようです。 ✨
しかし、これが問題です。スライスのサイズが変更されるたびに、その下にまったく新しい配列が作成され、データがこの新しい配列にコピーされます。便利?絶対に!ただし、ここには多少の計算コストがかかります。サイズを変更するたびに、Go は新しいメモリを割り当てて、内容をシャッフルする必要があることを意味します。
これは便利な Go のヒントです。スライスに多くのスペースが必要になることがわかっている場合は、make 関数を使用してください。 make([]T, len, cap) を使用すると、Go に「このタイプ、この長さ、この容量のスライスをください」と指示することになります。初期容量を準備しておくと、後でサイズを変更するコストを節約できます。賢いですね?
numbers := make([]int, 0, 100)
このスライスは容量 100 で始まりますが、まだアイテムが入っていません。 Go が常にサイズを変更しなくても、それを埋める準備ができています。長期的には、パフォーマンスを節約できます。
すべてのスライスには長さ (len) と容量 (cap) があり、それぞれ異なる役割を果たします。
スライスを拡大したい場合は、追加が頼りになる機能です。スライスの最後に要素を追加するように設計されており、必要に応じてスライスのサイズが自動的に変更されます。範囲外エラー (ほとんどの場合) に別れを告げましょう!
numbers := make([]int, 0, 100)
スライスに新しいアイテムを入れるのに十分な容量がある場合は、それが使用されます。そうでない場合は、追加により、より多くのスペースを持つ新しい配列が作成され、データが移動されます。とてもシンプルです! Effects Go によると、容量が不十分な場合、追加は「新しい基礎となる配列を割り当てる」とのことです。かなりきれいですね?
Go のスライスはあなたの友達であり、強力な味方でもあります。これにより、メモリ管理の重要な詳細の一部を隠しながら、データのコレクションを柔軟に操作できるようになります。ただし、大きな力には大きな責任が伴うということを忘れないでください。サイズを変更するたびに、多少の計算オーバーヘッドが発生します。スライスがどのように機能するのか、make と append がどのように役立つのかを理解することで、効率的でエレガントな Go コードを作成できるようになります。
効果的なゴー
以上がGo のスライスについて話しましょう: 配列の動的デュオ!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。