Go 言語における配列は、連続したメモリ ブロックです。各要素は固定サイズのスペースを占有します。配列の要素の型には、任意の基本データ型またはカスタム型を使用できます。配列の長さは固定されており、配列の作成時に指定され、後で変更することはできません。
配列の基本的な実装原理は、連続メモリ空間を使用して配列の要素を格納することです。配列の最初の要素はメモリ空間の開始アドレスに格納され、最後の要素はメモリ空間の終了アドレスに格納されます。配列の要素間にギャップはないため、配列の合計サイズは、配列要素のサイズに配列の長さを乗算した値に等しくなります。
たとえば、次のコードは 10 個の int 型要素を含む配列を作成します。
var arr [10]int
この配列の基本的な実装原理は次のとおりです。
+---+---+---+---+---+---+---+---+---+---+ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | +---+---+---+---+---+---+---+---+---+---+
の最初の要素配列 メモリ空間の開始アドレス 0 に格納され、最後の要素はメモリ空間の終了アドレス 9 に格納されます。配列の要素間にギャップはないため、配列の合計サイズは、配列要素のサイズ (4 バイト) に配列の長さ (10) を乗算した値 (40 バイト) に等しくなります。
配列の要素にはインデックスによってアクセスできます。配列のインデックスは、配列内の要素の位置を表す整数です。配列の最初の要素のインデックスは 0 で、最後の要素のインデックスは配列の長さから 1 を引いた値になります。
たとえば、次のコードは配列 arr の最初の要素にアクセスします:
fmt.Println(arr[0])
配列 arr の最初の要素は 0 であるため、このコードは 0 を出力します。
配列は for ループを通じて走査できます。 for ループ内の変数は、配列のインデックスまたは配列の要素にすることができます。
たとえば、次のコードは配列 arr を走査し、各要素を出力します:
for i := 0; i < len(arr); i++ { fmt.Println(arr[i]) }
このコードは出力します:
0 1 2 3 4 5 6 7 8 9
Arrays渡すことができます。 比較する配列の要素を比較します。配列の比較規則は次のとおりです。
たとえば、次のコードは配列 arr と配列 br を比較します。
var arr = [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} var br = [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} fmt.Println(arr == br)
配列 arr と配列 br の要素が同じであるため、このコードは true を出力します。
配列は、copy 関数を使用してコピーできます。 copy 関数の構文は次のとおりです。
func copy(dst, src []Type) int
このうち、dst はターゲット配列、src はソース配列です。 copy 関数は、src 配列の要素を dst 配列にコピーします。 dst 配列の長さが src 配列の長さより短い場合は、dst 配列の長さの要素のみがコピーされます。
たとえば、次のコードは配列 arr を配列 br にコピーします:
var arr = [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} var br = [10]int{} copy(br, arr) fmt.Println(br)
このコードは出力します:
[0 1 2 3 4 5 6 7 8 9]
配列をスライスに渡してサブ配列を作成できます。スライスの構文は次のとおりです。
arr[start:end]
このうち、start は部分配列の開始インデックス、end は部分配列の終了インデックスです。 start を省略した場合、部分配列の開始インデックスは 0 になります。 end を省略した場合、部分配列の終了インデックスは配列の長さになります。
たとえば、次のコードは配列 arr のサブ配列を作成します:
var arr = [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} var subArr = arr[2:5] fmt.Println(subArr)
このコードは出力します:
[2 3 4]
Arrays Go 言語の重要なデータ構造。配列の基本的な実装原理は、連続したメモリ空間を使用して配列の要素を格納することです。配列の要素には、インデックスによってアクセスすることも、for ループを通じて反復することもできます。配列は、配列の要素を比較することによって比較することも、copy 関数を使用してコピーすることもできます。配列をスライスしてサブ配列を作成できます。
以上がGo 言語の配列の基礎となるメカニズムを深く理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。