So sortieren Sie Strukturen mit mehreren Parametern
In Go ist es beim Sortieren eines Teils von Strukturen oft nützlich, mehrere Sortierparameter zu berücksichtigen. Beispielsweise möchten wir möglicherweise Mitglieder zuerst nach ihrem Nachnamen und dann nach ihrem Vornamen sortieren.
Eine Möglichkeit, dies zu erreichen, ist die Verwendung der in Go 1.22 eingeführten Funktion „slices.SortFunc“. Mit „slices.SortFunc“ können wir eine benutzerdefinierte Vergleichsfunktion angeben:
slices.SortFunc(members, func(a, b Member) int { return cmp.Or( cmp.Compare(a.LastName, b.LastName), cmp.Compare(a.FirstName, b.FirstName), ) })
Hier verwenden wir cmp.Or, um sowohl Nachnamen- als auch Vornamenvergleiche anzuwenden. cmp.Compare gibt eine Ganzzahl zurück, die Gleichheit (0), größer als (1) oder kleiner als (-1) angibt.
Eine weitere Option, die seit Go 1.8 verfügbar ist, ist die Verwendung von sort.Slice oder sort. Sortierfunktionen mit einer benutzerdefinierten Less-Funktion:
sort.Sort(byLastFirst(members))
Hier definieren wir einen benutzerdefinierten byLastFirst-Typ, der die Methoden Len, Swap und Less implementiert sort.Interface-Schnittstelle. Die Less-Methode prüft für Vergleiche sowohl den Nachnamen als auch den Vornamen.
Welcher Ansatz Sie wählen, hängt von der von Ihnen verwendeten Go-Version und dem Komfort ab, den sie für Ihre spezifische Anwendung bietet. Sofern sich das Sortieren jedoch nicht als Leistungsengpass erweist, wird im Allgemeinen der bequemste Ansatz bevorzugt.
Das obige ist der detaillierte Inhalt vonWie sortiere ich Strukturen in Go mithilfe mehrerer Parameter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!