Heim > Artikel > Backend-Entwicklung > Golang-Slice umgekehrt
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.
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] } }
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) }
Das Ausgabeergebnis lautet wie folgt:
[5 4 3 2 1] [12 10 8 6 4 2]
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) }
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]
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!