だから、あなたは外に飛び込んで、スライスについて聞いています。 「スライスとは何ですか?」あなたは不思議に思うかもしれません。アレイは十分ではありませんか?さて、それを分解しましょう!スライスはGOのキラー機能です。それらはアレイのようなものですが、はるかに涼しいです。動的で柔軟で、プログラムに必要に応じて成長して縮小することができます。しかし、途中で1つか2つのキャッチがあります。すべてを解き放ち、スライスに精通してください!
コアでは、スライスは配列です。しかし、静的配列とは異なり、スライスは動的です。サイズを変更できます。これは、データのニーズが予測不可能な場合に非常に便利です。アイテムのリストがあると想像してください。50個のアイテムである場合もありますが、50になる場合もあります。スライスはそれを大したことではありません。彼らはただ自分自身をサイズ変更します - ちょっと魔法のようです。 ✨
しかし、ここに取引があります。スライスがサイズを変更するたびに、その下に新しい配列が作成され、データがこの新しい配列にコピーされます。便利?絶対に!しかし、ここには少しの計算コストがあります。すべてのサイズの手段Goは新しいメモリを割り当て、周りに物事をシャッフルする必要があります。
ここにYAの便利なGoのヒントがあります。スライスのために多くのスペースが必要になることがわかっている場合は、Make関数を使用してください。 make([]、len、cap)で、あなたはゴーに言っています。初期容量を用意する準備ができていると、後でサイズを変更するコストが節約されます。スマート、正しい?
numbers := make([]int, 0, 100)
このスライスは100の容量で始まりますが、まだアイテムが含まれていません。常に物事を変更することなく、それを埋める準備ができています。長期的には、パフォーマンスを節約します。
すべてのスライスには長さ(len)と容量(キャップ)があり、異なる役割を果たします:
スライスを成長させたい場合、付録は頼りになる機能です。スライスの端に要素を追加するように設計されており、必要に応じてスライスを自動的にサイズ変更します。アウトバウンドエラーに別れを告げる(まあ、ほとんど)!
numbers := []int{1, 2, 3} numbers = append(numbers, 4, 5, 6)
スライスに新しいアイテムに適合するのに十分な容量がある場合、それを使用します。そうでない場合は、Appendはより多くのスペースを持つ新しい配列を作成し、データを移動します。そのように簡単です!効果的なGOによると、容量が不十分な場合、Appendは「新しい基礎となる配列を割り当てます」。かなりきちんと、そうですか?
go in goのスライスはあなたの友人であり、それは強力なものです。メモリ管理のザラザラした詳細のいくつかを隠しながら、データのコレクションを柔軟に操作できるようにします。しかし、覚えておいてください:大きな力では大きな責任があります。すべてのサイズには、少しの計算オーバーヘッドが付属しています。スライスがどのように機能し、どのようにメーカーと追加が役立つかを理解することで、あなたは効率的でエレガントなGOコードを書くことに順調に進んでいます。
effection-go
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3