Heim >Backend-Entwicklung >Golang >Wie füge ich einen Wert an einem bestimmten Index in ein Go-Slice ein, ohne andere Elemente zu beeinflussen?

Wie füge ich einen Wert an einem bestimmten Index in ein Go-Slice ein, ohne andere Elemente zu beeinflussen?

DDD
DDDOriginal
2024-11-19 06:57:03453Durchsuche

How to Insert a Value into a Go Slice at a Specific Index Without Affecting Other Elements?

Einen Wert in ein Slice an einem gegebenen Index einfügen

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!

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