Heim > Backend-Entwicklung > Golang > Wie sortiere ich Strukturen in Go nach mehreren Kriterien (Nachname, dann Vorname)?

Wie sortiere ich Strukturen in Go nach mehreren Kriterien (Nachname, dann Vorname)?

Linda Hamilton
Freigeben: 2024-12-09 20:07:19
Original
213 Leute haben es durchsucht

How to Sort Structs in Go by Multiple Criteria (LastName then FirstName)?

Sortieren von Strukturen mit mehreren Kriterien

In Go kann das Sortieren eines Teils von Strukturen mit verschiedenen Ansätzen erreicht werden. Diese Diskussion konzentriert sich auf das Sortieren nach mehreren Parametern, insbesondere nach Nachname und dann Vorname.

Methode 1: slices.SortFunc (Go 1.22)

Für Go 1.22 und höher, Slices.SortFunc bietet eine elegante Lösung:

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

Methode 2: sort.Slice oder sort.Sort

In Go 1.8 kann sort.Slice oder sort.Sort verwendet werden. Beide erfordern eine Less-Funktion zur Bestimmung der Reihenfolge. Diese Funktion vergleicht die Felder Nachname und Vorname:

sort.Slice(members, func(i, j int) bool {
    if members[i].LastName != members[j].LastName {
        return members[i].LastName < members[j].LastName
    }
    return members[i].FirstName < members[j].FirstName
})
Nach dem Login kopieren

Für sort.Sort ist ein benutzerdefinierter Typ erforderlich, der das sort.Interface implementiert:

type byLastFirst []Member

func (members byLastFirst) Len() int           { return len(members) }
func (members byLastFirst) Swap(i, j int)      { members[i], members[j] = members[j], members[i] }
func (members byLastFirst) Less(i, j int) bool { 
    if members[i].LastName != members[j].LastName {
        return members[i].LastName < members[j].LastName
    }
    return members[i].FirstName < members[j].FirstName }

sort.Sort(byLastFirst(members))
Nach dem Login kopieren

Leistungsüberlegungen

Wählen Sie den Ansatz, der den Anforderungen Ihrer Anwendung am besten entspricht. Sofern die Leistungsanalyse nicht ergibt, dass das Sortieren einen Engpass darstellt, sollte die Bequemlichkeit Vorrang haben.

Das obige ist der detaillierte Inhalt vonWie sortiere ich Strukturen in Go nach mehreren Kriterien (Nachname, dann Vorname)?. 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