Heim > Backend-Entwicklung > Golang > Wie sortiere ich Strukturen in Go mithilfe mehrerer Parameter?

Wie sortiere ich Strukturen in Go mithilfe mehrerer Parameter?

Linda Hamilton
Freigeben: 2024-12-11 10:03:17
Original
183 Leute haben es durchsucht

How to Sort Structs in Go Using Multiple Parameters?

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),
    )
})
Nach dem Login kopieren

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))
Nach dem Login kopieren

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!

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