Heim > Backend-Entwicklung > Golang > 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
Freigeben: 2024-11-15 08:50:02
Original
715 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 bei Verfügbarkeit Index

Wenn der Index, an dem Sie einfügen möchten, im Bereich der vorhandenen Elemente des Slice liegt, 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 des Elements an der Einfügung). Punkt).
  2. Fügt den neuen Wert am gewünschten Index ein.

Einfügen an einem neuen Index

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

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. Überprüft, ob der Index über die Kapazität des Slice hinausgeht und erstellt bei Bedarf 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

Zum Einfügen am Ende des Slice 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 das Paket „slices“ (für Go 1.21)

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

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