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
Patricia ArquetteOriginal
2024-11-15 08:50:02724Durchsuche

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

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

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)

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)

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