Wie verschiebt man ein Element innerhalb eines Slice in Go Without Duplication?

Linda Hamilton
Freigeben: 2024-11-02 09:06:29
Original
696 Leute haben es durchsucht

How to Move an Item Within a Slice in Go Without Duplication?

Verschieben eines Elements innerhalb eines Slice in Go

In Go ist es üblich, Slices zu manipulieren, bei denen es sich um dynamische Datenstrukturen handelt, die ein Element enthalten Folge von Elementen. Eine Aufgabe, auf die Sie möglicherweise stoßen, ist das Verschieben eines Elements von einer Position zu einer anderen innerhalb des Slice.

Um dieses Problem zu lösen, können Sie den folgenden Ansatz versuchen:

slice := []int{0,1,2,3,4,5,6,7,8,9}

indexToRemove := 1
indexWhereToInsert := 4

slice = append(slice[:indexToRemove], slice[indexToRemove+1:]...)
fmt.Println("slice:", slice)

newSlice := append(slice[:indexWhereToInsert], 1)
fmt.Println("newSlice:", newSlice)

slice = append(newSlice, slice[indexWhereToInsert:]...)
fmt.Println("slice:", slice)
Nach dem Login kopieren

Dieser Ansatz führt jedoch zu Ergebnissen bei unerwartetem Verhalten:

slice: [0 2 3 4 5 6 7 8 9]
newSlice: [0 2 3 4 1]
slice: [0 2 3 4 1 1 6 7 8 9] 
Nach dem Login kopieren

Wie Sie bemerkt haben, wird das Element an der ursprünglichen Position beim Einfügen dupliziert.

Lösung:

Korrekt Um ein Element innerhalb eines Slice zu verschieben, können Sie den folgenden Ansatz verwenden:

  1. Entfernen Sie das Element aus seiner ursprünglichen Position:

    removeItem := slice[indexToRemove]
    updatedSlice := append(slice[:indexToRemove], slice[indexToRemove+1:]...)
    fmt.Println("Updated slice before moving:", updatedSlice)
    Nach dem Login kopieren
  2. Fügen Sie das Element an der neuen Position ein:

    insertedSlice := append(updatedSlice[:indexWhereToInsert], removeItem)
    finalSlice := append(insertedSlice, updatedSlice[indexWhereToInsert:]...)
    fmt.Println("Final slice after moving:", finalSlice)
    Nach dem Login kopieren

Hier ist ein funktionierendes Codebeispiel:

func main() {
    slice := []int{0,1,2,3,4,5,6,7,8,9}

    indexToRemove := 1
    indexWhereToInsert := 4

    removeItem := slice[indexToRemove]
    updatedSlice := append(slice[:indexToRemove], slice[indexToRemove+1:]...)
    fmt.Println("Updated slice before moving:", updatedSlice)

    insertedSlice := append(updatedSlice[:indexWhereToInsert], removeItem)
    finalSlice := append(insertedSlice, updatedSlice[indexWhereToInsert:]...)
    fmt.Println("Final slice after moving:", finalSlice)
}
Nach dem Login kopieren

Ausgabe :

Updated slice before moving: [0 2 3 4 5 6 7 8 9]
Final slice after moving: [0 2 3 4 1 5 6 7 8 9]
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie verschiebt man ein Element innerhalb eines Slice in Go Without Duplication?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!