Heim > Backend-Entwicklung > Golang > Wie sortiere ich Strukturen in Go nach mehreren Parametern?

Wie sortiere ich Strukturen in Go nach mehreren Parametern?

Mary-Kate Olsen
Freigeben: 2024-12-16 12:20:11
Original
320 Leute haben es durchsucht

How to Sort Structs by Multiple Parameters in Go?

Strukturen mit mehreren Parametern sortieren

Frage:

Wie kann ein Array von Strukturen sein? nach mehreren Parametern sortiert, insbesondere nach Nachname und dann Vorname in Go?

Antwort:

Es gibt mehrere Ansätze zum Sortieren von Strukturen mit mehreren Parametern in Go.

Go 1.22 mit Slices.SortFunc

Die neueste Version von Go (1.22 und höher) bietet eine prägnante Lösung mit Slices.SortFunc:

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

sort.Slice- oder sort.Sort-Funktionen

Für frühere Versionen von Go sollten Sie die Verwendung von sort.Slice oder sort.Sort in Betracht ziehen . Beide erfordern eine benutzerdefinierte Less-Funktion, die die Reihenfolge basierend auf den gewünschten Parametern bestimmt.

Mit sort.Slice:

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

Mit sort.Sort:

Erstellen Sie einen benutzerdefinierten Typ, der die Schnittstelle sort.Interface implementiert und Len, Swap und Less definiert Methoden.

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

Überlegungen zur Leistung:

Während diese Ansätze verschiedene Möglichkeiten zum Sortieren von Strukturen bieten, ist die Leistungsanalyse für die Optimierung für Hotspots von entscheidender Bedeutung. Wählen Sie den Ansatz, der den Anforderungen Ihrer Anwendung am besten entspricht.

Das obige ist der detaillierte Inhalt vonWie sortiere ich Strukturen in Go nach mehreren Parametern?. 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