Golang-Slice umgekehrt

PHPz
Freigeben: 2023-05-16 19:18:07
Original
1566 Leute haben es durchsucht

Slice in der Go-Sprache wird sehr häufig verwendet. Es handelt sich um ein dynamisches Array, das einfach hinzugefügt, gelöscht und geändert werden kann. Aber manchmal müssen wir die Slice-Elemente umkehren, zum Beispiel {1, 2, 3, 4, 5} in {5, 4, 3, 2, 1} umkehren. In diesem Artikel wird erläutert, wie die Go-Sprache zur Implementierung verwendet wird Schneiden umgekehrt.

  1. Verwenden von Schleifen, um

Die Umkehrung eines Slice besteht eigentlich darin, die Elemente des Slice in umgekehrter Reihenfolge anzuordnen, was mithilfe einer Schleife erreicht werden kann. Die spezifische Methode besteht darin, das erste Element des Slice an das Ende zu verschieben, das zweite Element an das vorletzte und so weiter. Es ist zu beachten, dass bei einer ungeraden Länge des Slice die mittleren Elemente nicht ausgetauscht werden müssen.

Das Folgende ist die Code-Implementierung mithilfe einer Schleife:

func reverse(s []int) {
    for i := 0; i < len(s)/2; i++ {
        j := len(s) - i - 1
        s[i], s[j] = s[j], s[i]
    }
}
Nach dem Login kopieren

Die Umkehrfunktion im Code empfängt ein Slice vom Typ int als Parameter und kehrt dieses Slice um. Verwenden Sie zunächst eine for-Schleife, um die erste Hälfte der Elemente des Slice zu durchlaufen und sie mit den entsprechenden letzten Elementen auszutauschen. Es ist zu beachten, dass der Index j durch len(s)-i-1 erhalten wird, da der Index des letzten Elements des Slice len(s)-1 ist und der Index des letzten Elements, das i entspricht, Das Element ist len(s) -i-1. Wenn die Scheibenlänge eine ungerade Zahl ist, müssen die mittleren Elemente nicht ausgetauscht werden.

Verwenden Sie diese Funktion, um ein int-Typ-Slice beliebiger Länge umzukehren, zum Beispiel:

func main() {
    s1 := []int{1,2,3,4,5}
    reverse(s1)
    fmt.Println(s1)

    s2 := []int{2,4,6,8,10,12}
    reverse(s2)
    fmt.Println(s2)
}
Nach dem Login kopieren

Das Ausgabeergebnis lautet wie folgt:

[5 4 3 2 1]
[12 10 8 6 4 2]
Nach dem Login kopieren
Nach dem Login kopieren
  1. Verwenden Sie die Standardbibliotheksfunktion, um

Zusätzlich zur Verwendung von Schleifen den Standard zu implementieren Die Bibliothek bietet auch eine Funktion zum Umkehren eines Slice – Reverse. Diese Funktion ist im Sortierpaket definiert und wird wie folgt verwendet:

package main

import (
    "fmt"
    "sort"
)

func main() {
    s1 := []int{1,2,3,4,5}
    sort.Slice(s1, func(i, j int) bool { return i > j })
    fmt.Println(s1)

    s2 := []int{2,4,6,8,10,12}
    sort.Slice(s2, func(i, j int) bool { return i > j })
    fmt.Println(s2)
}
Nach dem Login kopieren

Die Funktion sort.Slice im Code empfängt zwei Parameter. Der erste Parameter ist der umzukehrende Slice und der zweite Parameter ist eine Funktion, die zum Definieren verwendet wird die Regeln für die Umkehrung. Wenn in dieser Funktion i größer als j ist, wird true zurückgegeben, was bedeutet, dass i und j vorwärts vertauscht werden müssen.

Es ist zu beachten, dass die Funktion sort.Slice nur mit Typen arbeiten kann, die der Schnittstelle sort.Interface entsprechen. Daher muss der Elementtyp des Slice die Methoden Len, Less und Swap implementieren. Für Slices vom Typ int wurden diese Methoden implementiert, sodass Sie die Funktion sort.Slice direkt verwenden können, um den umgekehrten Vorgang auszuführen.

Verwenden Sie die Funktion sort.Slice, um den Slice umzukehren. Der Code lautet wie folgt:

[5 4 3 2 1]
[12 10 8 6 4 2]
Nach dem Login kopieren
Nach dem Login kopieren

Beide Methoden können den Slice leicht umkehren. Welche Methode verwendet werden soll, kann entsprechend der tatsächlichen Situation ausgewählt werden. Wenn Sie nur einmal umkehren müssen, wird die Verwendung der Schleifenmethode empfohlen. Wenn Sie mehrmals umkehren müssen, können Sie die Verwendung der Funktion sort.Slice in Betracht ziehen, da sie die Sortierregeln wiederverwenden und die Effizienz verbessern kann.

Das obige ist der detaillierte Inhalt vonGolang-Slice umgekehrt. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage