Array
は、同じ型のデータのコレクションである組み込み型であり、値型です。 0 から始まる添字インデックスは要素の値にアクセスします。長さは初期化後に固定され、
はその長さを変更できません。パラメータとしてメソッドに渡されると、同じポインタを参照するのではなく、配列のコピーがコピーされます。配列の長さもその型の一部であり、その長さは組み込み関数
len(array) を通じて取得できます。
注: C の配列と比較すると、いくつかの違いがあります
1. Go の配列は値型です。つまり、ある配列を別の配列に代入する場合、配列は実際には配列全体をコピーしています
2. Go の配列が関数のパラメーターとして使用される場合、渡される実際のパラメーターは配列です。配列へのポインタ。これは C とは区別する必要があります。したがって、Go
では、関数のパラメータとして配列を渡す場合、効率はポインタを渡す場合ほど高くありません。
3. 配列の長さも Type の一部であり、[10]int と [20]int は異なることを意味します。
「golang チュートリアル 」の学習を推奨
スライス
配列の長さは変更できません。コレクションのようなもの特定のシナリオではあまり適用できません。Go は柔軟で強力な組み込み型スライス (「動的配列」) を提供します。
配列と比較すると、スライスの長さは固定されておらず、要素追加するとスライスの容量が増加する場合があります。スライスには 2 つの概念があります: 1 つは len の長さ、もう 1 つはキャップ容量です。長さは、値が割り当てられている添え字 1 の最大値を指します。これは、組み込み関数 len() を通じて取得できます。 。容量とは、スライスが現在保持できる要素の最大数を指し、組み込み関数
cap() を通じて取得できます。スライスは参照型なので、スライスを渡すときは同じポインタを参照することになり、値を変更すると他のオブジェクトに影響します。
以上がgolangの配列とスライスの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。