Go 言語では、append() を使用して要素をスライスに動的に追加できます。 append() は、1 つの要素、複数の要素、または新しいスライスをスライスに追加できます。構文は、「append(slice, element 1, element 2...)」または「append(slice, new slides...)」です。 。 append() 関数を使用して要素をスライスに動的に追加する場合、十分な要素を収容するのに十分なスペースがない場合、スライスは「拡張」され、新しいスライスの長さが変更されます。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
Go 言語では、append() を使用して要素をスライスに動的に追加できます。
Go 言語の append() 関数
append は、1 つの要素、複数の要素、および新しいスライスをスライスに追加できます
var a []int a = append(a, 1) // 追加1个元素 a = append(a, 1, 2, 3) // 追加多个元素, 手写解包方式 a = append(a, []int{1,2,3}...) // 追加一个切片, 切片需要解包
ただし、append() 関数を使用して要素をスライスに動的に追加する場合、十分な要素を収容するのに十分なスペースがない場合、スライスは「拡張」されることに注意してください。新しいスライスの長さ 変更が発生します。
スライスが拡張されるとき、容量拡張ルールは 1、2、4、8、16... のように容量の 2 倍に拡張されます。コードは次のとおりです。
var numbers []int for i := 0; i < 10; i++ { numbers = append(numbers, i) fmt.Printf("len: %d cap: %d pointer: %p\n", len(numbers), cap(numbers), numbers) }
コード出力は次のとおりです。
コードの説明は次のとおりです。
1 行目は整数スライスを宣言します。 。
var a = []int{1,2,3} a = append([]int{0}, a...) // 在开头添加1个元素 a = append([]int{-3,-2,-1}, a...) // 在开头添加1个切片
スライスの先頭に要素を追加する一般に、メモリの再割り当てが発生し、既存の要素がすべて 1 回コピーされるため、スライスの先頭から要素を追加するパフォーマンスは、末尾から要素を追加するよりもはるかに悪くなります。
追加関数は新しいスライスの特性を返すため、スライスはチェーン操作もサポートしています。複数の追加操作を組み合わせて、スライスの中央に要素を挿入できます:
var a []int a = append(a[:i], append([]int{x}, a[i:]...)...) // 在第i个位置插入x a = append(a[:i], append([]int{1,2,3}, a[i:]...)...) // 在第i个位置插入切片
各追加操作の 2 番目の追加呼び出しでは、一時スライスを作成し、a[i:] の内容を新しく作成したスライスにコピーしてから、一時的に作成したスライスを a[:i] に追加します。
【関連する推奨事項:
Go ビデオ チュートリアル、プログラミング教育 】
以上がGo言語でスライスに要素を追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。