ホームページ >バックエンド開発 >Golang >Go スライスの容量と長さの違いは何ですか?

Go スライスの容量と長さの違いは何ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-13 16:40:13498ブラウズ

What's the Difference Between Capacity and Length in Go Slices?

スライスの容量と長さの違いを理解する

Go のスライスは、柔軟かつ効率的な方法を提供するデータ構造です。値のコレクションを処理します。これは、基になる配列で動作し、容量と長さという 2 つの重要なプロパティを提供します。

容量

スライスの容量とは、基になる配列が持つ要素の総数を指します。配列を保持できます。 make()関数でスライスを作成する際、第3引数に容量を指定できます。例:

x := make([]int, 0, 5)

この場合、スライス x の長さは 0 ですが、容量は 5 です。

長さ

スライスの長さは、現在含まれている要素の数を表します。上の例のように、スライスを長さ 0 で初期化すると、長さも 0 になります。

容量と長さの違い

容量は最大数を示しますスライスが収容できる要素の数、長さは、スライスに格納される非 null 値の実際の数を示します。スライスの長さはその容量を超えることはできませんが、すべての要素が埋まっていない場合は容量よりも小さくなる可能性があります。

より良い方法理解するには、次の例を考えてください。

s := make([]int, 0, 3)
for i := 0; i < 5; i++ {
    s = append(s, i)
}

このコードは、容量 3 のスライスを作成し、容量に達するまでそれに値を追加します。容量を超えると、スライスのサイズが自動的に変更され、容量が増加します。このコードの出力は次のようになります。

cap 3, len 1
cap 3, len 2
cap 3, len 3
cap 6, len 4
cap 6, len 5

この出力では、容量は 3 から始まり、スライスがその容量に達すると 2 倍になります。ただし、長さは追加操作のたびに増加し、実際の値の数を表します。

以上がGo スライスの容量と長さの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。