「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ゴースライスの最初から要素を落とすと、その容量にどのように影響しますか?

ゴースライスの最初から要素を落とすと、その容量にどのように影響しますか?

2025-02-06に投稿しました
ブラウズ:496

How Does Dropping Elements from the Beginning of a Go Slice Affect Its Capacity?

go

のスライス容量の変化を理解するgoスライスを使用する場合、容量を含む基礎となる特性を理解することが不可欠です。スライスから最後のnアイテムをドロップすると容量が維持されている間、最初のnアイテムを削除すると容量が影響します。

goスライス構造3つのフィールドで構成される:

タイプスライスstruct { 配列Unsafe.pointer len int CAP INT }

type slice struct {
    array unsafe.Pointer
    len   int
    cap   int
}
    len:スライスの要素の数。保持できる要素の数を表します。 :len(s)-n]、オリジナルと同じ基礎となる配列を共有する新しいスライスを作成します。ただし、新しいスライスの長さは減少しますが、容量は変更されません。これは、基礎となる配列が残りの要素に対応するのに十分な能力を持っているためです。式s [n:]を使用して、スライスは、長さが短い新しいスライスを作成するだけでなく、新しい基礎配列を割り当てます。新しいスライスの容量は、要素の数の減少に対応するように調整されます。主要() { s:= [] int {2、3、5、7、11、13} printslice(s) //最後の2つの値をドロップします s = s [:len(s)-2] printslice(s) //最初の2つの値をドロップします S = S [2:] printslice(s) }
  • 出力は、スライスを操作する際の長さ、容量、および基礎となる配列のポインターの変化を示しています:
  • ptr = 0x450000 len = 6 cap = 6 ] ptr = 0x450000 len = 4 cap = 6 [2 3 5 7] ptr = 0x450008 len = 2 cap = 4 [5 7]
結論

GOスライスの内部構造を理解することは、それらを効果的に操作するために重要です。最後のNアイテムを削除すると、最初のNアイテムを削除するのとは異なる容量に影響を与えることを認識することにより、開発者はコードを最適化し、サイズのサイズ変更に関連する潜在的なパフォーマンスの問題を回避できます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3