Heim  >  Artikel  >  Backend-Entwicklung  >  Wie fügt man Werte an einem bestimmten Index in ein Go-Slice ein?

Wie fügt man Werte an einem bestimmten Index in ein Go-Slice ein?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-15 08:50:02632Durchsuche

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

Werte in ein Slice an einem bestimmten Index einfügen

In Go erfordert das Einfügen von Werten in ein Slice an einem bestimmten Index eine sorgfältige Überlegung Slice-Länge, Kapazität und ob der Index innerhalb seiner Grenzen liegt.

Einfügen an einem verfügbaren Index

Wenn der Index, an dem Sie einfügen möchten, innerhalb des Bereichs von liegt Für die vorhandenen Elemente des Slice können Sie den folgenden Ansatz verwenden:

slice1 := []int{1, 3, 4, 5}
slice1 = append(slice1[:index+1], slice1[index:]...)
slice1[index] = value

Dieser Ansatz:

  1. Erstellt ein neues Slice, das aus den Elementen vor und nach dem Einfügepunkt besteht (mit Ausnahme der Element am Einfügepunkt).
  2. Fügt den neuen Wert am gewünschten Index ein.

Einfügen an einem neuen Index

Wenn der Wenn der Index, an dem Sie einfügen möchten, größer als die aktuelle Länge des Slice ist, müssen Sie die Kapazität des Slice erweitern, um das neue Element aufzunehmen.

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

Dieser Ansatz:

  1. Prüft, ob der Index die Kapazität des Slice überschreitet und erstellt ggf. ein neues Slice mit der doppelten Kapazität.
  2. Fügt den neuen Wert am gewünschten Index ein.

Einfügen am Ende des Slice

Um am Ende des Slice einzufügen, können Sie einfach den neuen Wert anhängen:

slice1 := []int{1, 3, 4, 5}
slice1 = append(slice1, value)

Verwenden Sie die Funktion „Slices“ Paket (für Go 1.21)

Für Go Version 1.21 und höher können Sie die Funktion „slices.Insert()“ aus dem Paket github.com/golang/exp/slices verwenden:

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

slice1 := []int{1, 3, 4, 5}
slices.Insert(slice1, index, value)

Beispiel:

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]

Das obige ist der detaillierte Inhalt vonWie fügt man Werte an einem bestimmten Index in ein Go-Slice ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn