Go 言語は静的型付け言語であるため、開発中に多数のスライス操作が行われます。スライスは、特定の長さの要素のシーケンスを格納できるコンテナーであり、その長さは実行時に動的に拡張または縮小できます。この記事では、Go でスライスを設定する方法を説明します。
1. スライスを作成する
Go では、make() 関数を使用してスライスを作成できます。 make() 関数には、スライス タイプとスライス長の 2 つのパラメータが必要です。たとえば、長さ 5 の整数型スライスを作成するには、次のように記述します。
slice := make([]int,5)
ストレージ領域が割り当てられた整数型スライスが必要な場合は、次のメソッドを使用できます。
array := [5]int{1,2,3,4,5} slice := array[1:4]
ここでの配列は 5 つの整数要素を含む配列であり、スライスは配列の 2 番目の要素から 4 番目の要素までのスライスです。 len() 関数を使用してスライスの要素数を取得し、cap() 関数を使用してスライスの現在の最大容量を取得できます。
2. スライスの拡張
スライスに格納されている要素の数が現在の最大容量を超えると、スライスは自動的に拡張されます。拡張中、スライスの長さは 2 倍になり、容量は 3 倍になります。例えば、長さ10、容量20のスライスを再度拡張すると、スライス長は20、容量は40になります。
Go のスライスは動的に拡張されますが、スライスの長さを毎回 2 倍にできるわけではありません。そうすると、連続したメモリ領域が不足する可能性があります。現在のメモリを拡張できない場合、新しいメモリ ブロックが再割り当てされ、元の要素が新しいメモリ ブロックにコピーされますが、これはリソースを大量に消費する操作です。
3. スライスとスプライシング
Go 言語では、スライスとスプライシングの操作が非常に一般的です。 append() 関数を使用して、1 つ以上のスライスを結合できます。 append() 関数は可変パラメータ関数であり、各パラメータは接続される 1 つ以上のスライスになります。
たとえば、長さ 3 の 2 つのスライスを長さ 6 のスライスに結合したいとします。これは次のように記述できます。
slice1 := []int{1,2,3} slice2 := []int{4,5,6} slice3 := append(slice1,slice2...)
スライスが渡されたことに注意してください。 append() 関数にそれらは同じタイプでなければなりません。そうでない場合、それらは結合されません。さらに、初期化されていないスライスは append() 関数を直接使用できないため、最初に make() 関数を使用して初期化する必要があります。
4. スライスのコピー
Go 言語では、copy() 関数を使用してスライスをコピーできます。 copy() 関数は、あるスライスの要素を別のスライスにコピーできます。通常、あるスライスの要素を別のスライスにコピーするために使用されます。 copy() 関数の最初のパラメータはターゲット スライスで、2 番目のパラメータはソース スライスです。たとえば、長さ 5 のスライスを別のスライスにコピーする場合は、次のように記述できます。
slice1 := []int{1,2,3,4,5} slice2 := make([]int,5) copy(slice2,slice1)
上記のコードでは、スライス 2 はスライス 1 の要素をコピーします。ターゲットのスライスは make() 関数を使用して初期化する必要があることに注意してください。初期化しないと、コピー操作が不可能になります。
概要:
スライスは Go 言語の非常に重要なデータ型であり、さまざまなシナリオで広く使用されています。この記事では、スライスの作成方法、拡張方法、継ぎ合わせやコピーの方法を簡単に紹介します。スライス操作では、メモリの使用状況と境界問題の防止に注意する必要があります。
以上がGo でスライスを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。