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

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

Susan Sarandon
Susan Sarandonオリジナル
2024-11-19 01:36:02454ブラウズ

How to Insert a Value into a Go Slice at a Specific Index?

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

Go では、特定のインデックスのスライスに値を挿入できます。さまざまな方法を使用する:

スライスの使用。挿入関数 (Go) 1.21 以降):

result = slices.Insert(slice, index, value)

注: インデックスは 0 と len(slice) の間である必要があります。

追加演算子と代入演算子の使用:

a = append(a[:index+1], a[index:]...)
a[index] = value

インサートの使用関数:

func insert(a []int, index int, value int) []int {
    if index == len(a) { // Nil or empty slice, or after last element
        return append(a, value)
    }
    a = append(a[:index+1], a[index:]...) // Step 1+2
    a[index] = value                      // Step 3
    return a
}

ベンチマーク:

提供されたベンチマーク結果は、スライス サイズが小さい場合は、slices.Insert 関数が最も効率的であることを示しています。スライスが大きい場合、追加関数と挿入関数のパフォーマンスが向上します。

範囲外のインデックスの処理:

  • スライス。インデックスが範囲外の場合、挿入はパニックになります。 .
  • インデックスが次の値より大きい場合、追加関数と挿入関数はスライスのサイズを自動的に変更します。 len(スライス).

ジェネリック (Go 1.18 以降):

func insert[T any](a []T, index int, value T) []T {
    // Similar to the non-generic function
}

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。