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

Patricia Arquette
Freigeben: 2024-11-15 08:50:02
Original
636 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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]
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage