Golang は、2007 年のリリース以来、インターネットやビッグデータの分野で広く使用されているオープンソース プログラミング言語です。中でもslice(スライス)は動的配列機能として、Golangにおいて最も実用的なデータ構造の一つとなっています。
この記事では、Golang におけるスライスの定義、作成、インターセプト、展開、配列との違いなどの使い方を詳しく紹介します。
1. スライスの定義
Golang のスライスは参照型のデータ構造であり、基礎となる配列をカプセル化したもので、参照、長さ、容量、およびその他の関連情報が含まれています。
スライスの定義形式は var name []Type です。ここで、name はスライスの名前、Type はスライス要素のタイプです。
例:
var s []int // int 型の空のスライスを定義します
var a []string // string 型の空のスライスを定義します
2. スライスの作成
スライスは make 関数で作成できます。 make 関数の形式は make([]Type, length, Capacity) です。ここで、Type はスライス要素のタイプ、length はスライスの長さ、capacity はスライスの容量です。
例:
s := make([]int, 3, 5) // 長さ 3、容量 5 の int 型スライスを作成します
a : = make( []string, 2) //長さ 2、容量 2 の文字列型スライスを作成します。
容量を指定しない場合、作成されるスライスの容量は次のようになります。その長さ、つまり make([]Type, length)。
さらに、配列を使用してスライスを作成することもできます。例:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:3] // 添字 1 からスライスまでの基礎となる配列を作成します添え字 2
3. スライス インターセプト
スライスをインターセプトして新しいスライスを取得できます。インターセプトされた形式は name[start:end] です。start は開始を表します。subscript, endは終了添字を表します(終了自体を除く)。
start と end の値の範囲は [0, len(name)] 以内であり、start ≦ end であることに注意してください。
例:
s := make([]int, 5) // 長さ 5 の int 型スライスを作成します
s1 := s[1:3] // 添字 1 から添字 2 までのスライスを取得します。
さらに、開始または終了のいずれかまたは両方を省略して、スライスが対応する開始または終了として最大値または最小値を選択することもできます。デフォルトでは。
例:
s := make([]int, 5) // 長さ 5 の int 型スライスを作成します
s1 := s[:3] // Get添え字 0 から添え字 2
s2 までのスライス := s[2:] // 添え字 2 から添え字 4
s3 までのスライスを取得します := s[:] // スライス全体を取得
4. スライスの拡張
スライスの拡張とは、元のスライスの長さが足りない場合に、スライスの容量を増やすと同時に、スライスを再度開く必要があることを意味します。より大きな基になる配列を作成し、元の配列にデータを追加します。データは新しい基になる配列にコピーされます。
Golang におけるスライス拡張のメカニズムは、まず現在のスライスよりも大きな容量の連続メモリを適用し、次に元の基礎となる配列のデータを新しい基礎となる配列にコピーすることです。最後に、元の基礎となる配列が解放され、元のスライスが新しい基礎となる配列を参照できるようになります。
スライスの拡張処理はランタイムライブラリによって下部に実装されており、スライスを使用する際にmake関数で容量を指定する必要があることも説明できます(容量が足りない場合は、展開された)、またはスライス内でスコープ内で宣言します。
スライスを展開するとメモリ空間が割り当てられることに注意してください。スライス内の要素が不要になった場合は、これらの不要な要素をスライス内に保持しないことをお勧めします。メモリの過剰な占有につながります。
5. スライスと配列の違い
Golang では、配列とスライスは 2 つの異なるデータ型です。配列は同じ型の要素を格納する固定長のコンテナであるのに対し、スライスは動的配列(動的コンテナ)ですが、配列を使用する場合、その長さはすでに決定されています。スライスの長さは実行時に動的に変更できます。
配列の場合、長さは配列型のコンポーネントであり変更できません。配列を使用する場合、スライスの長さは配列は明確に指定する必要があります。多くの場合、配列を使用すると、大量のデータを処理する必要がある場合、配列がメモリ領域を占有しすぎてプログラムがクラッシュするなど、多くの不都合が生じる可能性があります。
一方、スライスは非常に便利なデータ構造です。動的にスケーラブルな性質により、スライスは配列の固定長の欠点を十分に克服でき、可変サイズのデータ コレクションを扱う場合に推奨されるデータ型の 1 つです。これを使用する場合、最初に空のスライスを宣言し、実際のニーズに応じてその長さを動的に増やすことができます。
結論
この記事では、Golang におけるスライスの定義、作成、インターセプト、展開などの一般的な使い方と、配列との違いを中心に紹介します。 Golang の強力なデータ構造の 1 つであるスライシングは、可変サイズのデータ コレクションを迅速かつ簡単に処理するのに役立ちます。スライスという操作方法をマスターすると、より効率的にGolangプログラムを書くことができるようになります。
以上がGolang スライスの使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。