Heim >Backend-Entwicklung >Golang >Wie füge ich einen Wert an einem bestimmten Index in ein Go-Slice ein, ohne andere Elemente zu beeinflussen?
Frage:
Wie können wir einen Wert in a einfügen? spezifischer Index in einem Go-Slice ohne Einbeziehung anderer Elemente?
Problembeschreibung:
Angenommen, wir haben zwei Slices, Array1 und Array2, und wir möchten Array2[2 einfügen ] bei array1[1]. Wir möchten den Rest von Array1 unberührt lassen.
Hintergrund:
Frühere Techniken verwendeten den Doppelpunktoperator (:), aber er umfasst auch nachfolgende Elemente. Ziel dieses Tutorials ist es, eine umfassende Lösung bereitzustellen, die sich auf das Einfügen einzelner Werte an einem bestimmten Index konzentriert.
Lösung:
Verwendung des Pakets „slices.Insert“ (Go 1.21 ):
result := slices.Insert(slice, index, value)
Hinweis: 0 ≤ index ≤ len(slice)
Anhängen und Zuweisen verwenden
a = append(a[:index+1], a[index:]...) a[index] = value
Hinweis: len(a) > 0 && Index < len(a)
Für Sonderfälle:
Wenn len(a) == index, tun Sie Folgendes:
a = append(a, value)
Wenn Sie am Index Null einfügen und mit einem int-Slice arbeiten, gehen Sie wie folgt vor:
a = append([]int{value}, a...)
Benutzerdefinierte Funktion:
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 }
Generische Funktion:
func insert[T any](a []T, index int, value T) []T { ... return a }
Beispiel:
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]
Das obige ist der detaillierte Inhalt vonWie füge ich einen Wert an einem bestimmten Index in ein Go-Slice ein, ohne andere Elemente zu beeinflussen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!