Golang のスライスでは、append() は非常に重要な関数であり、非常に頻繁に使用される関数です。この記事では、Golangのslicing関数とappend()関数の使い方を紹介します。
1. Golang のスライシング
配列と比較して、Golang のスライシングにはより強力な機能があります。スライスは、長さが動的に変更できるという点で配列とは異なります。 Golang では、スライスは配下の配列を指す参照型であり、スライスの容量が不足した場合、必要に応じてスライス サイズが自動的に増加します。
スライスを定義する方法は次のとおりです。
var s1 []int // []int 表示定义了一个 int 类型的切片
この時点では、基になる配列が定義されていないため、s1 の長さと容量は両方とも 0 です。
長さ 5、容量 10 のスライスの定義は、make() 関数を使用して実装できます。
s2 := make([]int, 5, 10) // 长度为 5,容量为 10
slice[index] は、スライス内の要素にアクセスできます。基本的には、基礎となる配列内の要素です。 lice[start:end] は、開始 (これを含む) から終了 (これを含まない) までのサブスライスを取得できます。例:
a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} fmt.Println(a[3]) // 4 fmt.Println(a[1:5]) // [2 3 4 5] fmt.Println(a[:5]) // [1 2 3 4 5] fmt.Println(a[5:]) // [6 7 8 9 10] fmt.Println(a[:]) // [1 2 3 4 5 6 7 8 9 10]
2. append() 関数
append() 関数は、スライスの末尾に要素を追加し、新しいスライスを返すことができます。 append() 関数には次のような用途があります。
次のコードは、要素を s1 に追加し、新しいスライスを生成します:
s1 := []int{1, 2, 3, 4, 5} s2 := append(s1, 6, 7) fmt.Println(s1) // [1 2 3 4 5] fmt.Println(s2) // [1 2 3 4 5 6 7]
注: append() 関数を使用します。スライスに要素を追加する場合、容量を超えていなければ基になる配列は変更されませんが、容量を超えると新しい基になる配列が生成されます。
次のコードは、s2 の要素を s1 に追加し、新しいスライスを生成します:
s1 := []int{1, 2, 3, 4, 5} s2 := []int{6, 7} s3 := append(s1, s2...) fmt.Println(s1) // [1 2 3 4 5] fmt.Println(s2) // [6 7] fmt.Println(s3) // [1 2 3 4 5 6 7]
注: append() を使用する場合あるスライスを別のスライスに追加する関数では、s2 の後に 3 つのドット (...) を追加する必要があります。これは、s2 が分割されて要素が取り出されるという意味です。
次のコードは、長さ 0、容量 0 のスライス s1 を作成し、それに要素を追加します。
var s1 []int s1 = append(s1, 1) s1 = append(s1, 2, 3) fmt.Println(s1) // [1 2 3]
以上がGolang のスライス関数と append() 関数の使用方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。