ホームページ > バックエンド開発 > Golang > 他の要素に影響を与えずに、Go スライスの特定のインデックスに値を挿入するにはどうすればよいですか?

他の要素に影響を与えずに、Go スライスの特定のインデックスに値を挿入するにはどうすればよいですか?

DDD
リリース: 2024-11-19 06:57:03
オリジナル
472 人が閲覧しました

How to Insert a Value into a Go Slice at a Specific Index Without Affecting Other Elements?

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

質問:

スライスに値を挿入するにはどうすればよいですか?他の要素を含めずに 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 サイトの他の関連記事を参照してください。

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