質問:
スライスに値を挿入するにはどうすればよいですか?他の要素を含めずに Go スライス内の特定のインデックスを作成しますか?
問題説明:
array1 と array2 の 2 つのスライスがあり、array1[1] に array2[2] を挿入するとします。 array1 の残りの部分はそのままにしておきます。
背景:
以前の手法ではコロン演算子 (:) を使用していましたが、これには後続の要素も含まれます。このチュートリアルは、特定のインデックスに単一の値を挿入することに重点を置いた包括的なソリューションを提供することを目的としています。
解決策:
slices.Insert パッケージの使用 (Go 1.21) ):
result := slices.Insert(slice, index, value)
注: 0 ≤ Index ≤ len(slice)
Append と割り当て
a = append(a[:index+1], a[index:]...) a[index] = value
注: len(a) > 0 && インデックス
特殊な場合:
len(a) == インデックスの場合、次のようにします:
a = append(a, value)
インデックス 0 に挿入し、int スライスを処理する場合、 do:
a = append([]int{value}, a...)
カスタム関数:
func insert(a []int, index int, value int) []int { if len(a) == index { return append(a, value) } a = append(a[:index+1], a[index:]...) a[index] = value return a }
汎用関数:
func insert[T any](a []T, index int, value T) []T { ... return a }
例:
slice1 := []int{1, 3, 4, 5} slice2 := []int{2, 4, 6, 8} slice1 = append(slice1[:2], slice1[1:]...) slice1[1] = slice2[2] fmt.Println(slice1) // [1 6 3 4 5]
以上が他の要素に影響を与えずに、Go スライスの特定のインデックスに値を挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。