Heim > Backend-Entwicklung > Golang > Wie sortiere ich eine Go-Struktur nach ihrem Feld „time.Time'?

Wie sortiere ich eine Go-Struktur nach ihrem Feld „time.Time'?

Mary-Kate Olsen
Freigeben: 2024-12-03 18:19:09
Original
264 Leute haben es durchsucht

How to Sort a Go Struct by its `time.Time` Field?

Sortieren einer Struktur nach dem Time.Time-Feld in Go

Beim Versuch, eine Struktur nach ihrem Member vom Typ time.Time zu sortieren, Benutzer kann zu unerwarteten Ergebnissen führen. Dieses Problem tritt auf, weil dem Standardsortierpaket die Funktionalität zum Sortieren von Zeitwerten fehlt.

Problembeschreibung:

Die bereitgestellte Struktur „reviews_data“ hat ein Mitglied namens date of Geben Sie time.Time ein. Benutzer haben einen benutzerdefinierten Slice-Typ, timeSlice, definiert und die Methoden Len, Less und Swap zum Sortieren des Slice implementiert. Sie versuchen, eine Karte von reviews_data auf timeSlice abzubilden, den Slice zu sortieren und erwarten, dass die Karte nach ihren Datumswerten sortiert wird. Die Sortierung erfolgt jedoch nicht wie erwartet.

Lösung:

Für Go-Versionen 1.8 und höher kann das Problem stattdessen durch die Verwendung der Funktion sort.Slice behoben werden Art. Art. Art. Die neue Syntax zum Sortieren des Slice nach dem Datumsfeld wäre:

sort.Slice(timeSlice, func(i, j int) bool {
    return timeSlice[i].date.Before(timeSlice[j].date)
})
Nach dem Login kopieren

Die Funktion sort.Slice nimmt das zu sortierende Slice und einen Abschluss, der die Vergleichsfunktion definiert. In diesem Fall vergleicht der Abschluss die Datumswerte zweier Elemente im Slice.

Erklärung:

Vor Go 1.8 konnte die Funktion sort.Sort nur sein Wird mit Typen verwendet, die die Sorter-Schnittstelle implementiert haben. In Go 1.8 und höher wurde sort.Slice eingeführt, das es Benutzern ermöglicht, Slices mithilfe eines Abschlusses zu sortieren, ohne dass die Implementierung eines benutzerdefinierten Sorter-Typs erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie sortiere ich eine Go-Struktur nach ihrem Feld „time.Time'?. 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