So sortieren Sie Strukturen mit mehreren Parametern
Bei der Programmierung ist es oft notwendig, Daten nach mehreren Kriterien zu sortieren. In Go kann dies mithilfe benutzerdefinierter Sortierfunktionen effektiv erreicht werden.
Problem:
Wie sortiert man einen Teil der Strukturen nach Nachname und dann Vorname?
Lösung mit Slices.SortFunc (Go 1.22 ):
slices.SortFunc(members, func(a, b Member) int { return cmp.Or( cmp.Compare(a.LastName, b.LastName), cmp.Compare(a.FirstName, b.FirstName), ) })
Diese Lösung verwendet die Funktion „slices.SortFunc“, um Strukturen anhand ihrer Felder „Nachname“ und „Vorname“ in dieser Reihenfolge zu vergleichen.
Lösung mit sort.Slice oder sort.Sort:
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 })
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))
Beide Lösungen vergleichen die Nachnamenfelder Erste. Wenn sie gleich sind, vergleichen sie die Felder „Vorname“. Das Ergebnis ist ein nach beiden Feldern sortierter Teil der Mitglieder.
Das obige ist der detaillierte Inhalt vonWie sortiere ich Strukturen in Go nach mehreren Feldern (Nachname, dann Vorname)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!