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), ) })
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 })
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))
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!