ホームページ > バックエンド開発 > Golang > Go スライスの特定のインデックスに値を挿入するにはどうすればよいでしょうか?

Go スライスの特定のインデックスに値を挿入するにはどうすればよいでしょうか?

Patricia Arquette
リリース: 2024-11-15 08:50:02
オリジナル
715 人が閲覧しました

How do you insert values into a Go slice at a given index?

指定されたインデックスのスライスに値を挿入する

Go では、特定のインデックスのスライスに値を挿入するには、スライスの長さ、容量、インデックスがその範囲内にあるかどうかbounds.

使用可能なインデックスへの挿入

挿入したいインデックスがスライスの既存要素の範囲内にある場合は、次の方法を使用できます。

slice1 := []int{1, 3, 4, 5}
slice1 = append(slice1[:index+1], slice1[index:]...)
slice1[index] = value
ログイン後にコピー

このアプローチ:

  1. 新しいスライスを作成します挿入ポイントの前後の要素で構成されます (挿入ポイントの要素を除く)。
  2. 必要なインデックスに新しい値を挿入します。

新しいインデックス

挿入したいインデックスが現在のスライスの長さより大きい場合は、新しい要素を収容できるスライスの容量。

index := 7
if index > cap(slice1) {
    newCap := cap(slice1) * 2 // Double the capacity
    slice1 = append(make([]int, len(slice1), newCap), slice1...)
}
slice1 = append(slice1[:index+1], slice1[index:]...)
slice1[index] = value
ログイン後にコピー

このアプローチ:

  1. インデックスがスライスの容量を超えているかどうかを確認し、必要に応じて、2 倍の容量を持つ新しいスライスを作成します。
  2. 希望の位置に新しい値を挿入します。 Index.

スライスの末尾に挿入

スライスの末尾に挿入するには、新しい値を追加するだけです:

slice1 := []int{1, 3, 4, 5}
slice1 = append(slice1, value)
ログイン後にコピー

「slices」パッケージの使用 (Go 1.21 の場合) )

Go バージョン 1.21 以降では、github.com/golang/exp/slices パッケージのスライス.Insert() 関数を使用できます:

import "github.com/golang/exp/slices"

slice1 := []int{1, 3, 4, 5}
slices.Insert(slice1, index, value)
ログイン後にコピー

例:

array1 := []int{1, 3, 4, 5}
array2 := []int{2, 4, 6, 8}

index := 1 // Index to insert at
value := array2[2] // Value to insert

// Insert value into array1 at index
slice1 := array1[:index+1]
slice2 := array1[index:]
slice1 = append(slice1, value)
slice1 = append(slice1, slice2...)
array1 = slice1

// Result: [1, 6, 3, 4, 5]
ログイン後にコピー

以上がGo スライスの特定のインデックスに値を挿入するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート