Golangは近年注目を集めているプログラミング言語の一つで、高効率で同時処理能力に優れているだけでなく、習得が容易で構文が簡潔であるなど多くの利点を持っています。 Golang の重要なコンポーネントの 1 つとして、スライスは開発でよく使用されます。では、Golang でスライスを設定するにはどうすればよいでしょうか?以下で詳しく見てみましょう。
スライスとは何ですか?
Golang では、スライスは配列に似たデータ構造ですが、柔軟性と可変性がより高くなります。スライスは動的配列とみなすことができ、長さは固定されておらず、要素は自由に追加または削除できます。スライスの基礎となる構造は配列に似ていますが、固定長ではなく動的に拡張できます。
スライスの定義と使用法
Golang でスライスを定義するのは非常に簡単です。「[]」を使用して宣言するだけです。構文形式は次のとおりです:
var a []int //int 型のスライスを定義します a
次のように、組み込みの make 関数を使用して、初期容量 0 のスライスを作成することもできます。 a := make([]int , 0) //初期容量 0 の int 型スライスを作成します。
make 関数の最初のパラメーターが、対応するスライスの型であることがわかります。 2 番目のパラメータはスライスの長さ、3 番目のパラメータはスライスの容量です (オプション)。長さは現在スライスにある要素の数を表し、容量はスライスが現在格納できる要素の数を表します。
次に、次のように、append 関数を使用してスライスに要素を追加します。
a = append(a, 1) //要素 1 をスライス a
に追加します。ここでの append メソッドは Golang の組み込み関数であり、スライスに要素を追加するために使用できます。追加後、スライス a の要素は 0 から 1 に変化します。
スライスの代入とコピー
Golang では、スライスの代入とコピーは非常に簡単で、基になる配列へのポインタなので、代入やコピーの際はスライス ポインタをコピーするだけです。基になる配列のコピーを作成せずにコピーします。
以下は例です:
a := []int{1,2,3} //スライスを定義します a
b := a // a を b## に代入します#b[0] = 4 //スライス b の値を [4 2 3]fmt.Println(a) //a の値を [4 2 3]
に出力しますa を b に代入した後、b の要素を変更すると、a の要素の値に影響を与えることがわかります。逆に、a の要素を変更すると、b の要素の値にも影響します。これは、a と b が同じ基になる配列を指しているためです。
b := make([]int, len(a))
copy(b, a) //スライス a の値をスライス bb[0] = にコピーします。 4
fmt.Println(a) //出力 a の値は [1 2 3]
fmt.Println(b) //出力 b の値は [4 2 3]
copy 関数を使用してスライス a の値をスライス b にコピーした後、b の要素を変更しても、a の要素の値には影響しないことがわかります。
新しい長さが元の長さの 2 倍以下の場合、容量は新しいスライスの 2 倍が元の長さになります。
fmt.Println(len(a), cap(a)) //出力: 10 10
a = append(a , 10) //要素を追加します
fmt.Println(len(a), cap(a)) //出力: 11 20
ご覧のとおり、要素 10 をスライスに追加した後、容量は 20 に拡張され、元の長さの 2 倍になります。
以上がGolang スライスの設定方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。