首頁 > 後端開發 > Golang > 如何按「time.Time」欄位對 Go 結構體進行排序?

如何按「time.Time」欄位對 Go 結構體進行排序?

Mary-Kate Olsen
發布: 2024-12-03 18:19:09
原創
326 人瀏覽過

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

在Go 中按Time.Time 欄位對結構體進行排序

當嘗試按time.Time 類型的成員對結構體進行排序時,使用者可能會遇到意想不到的結果。出現此問題的原因是預設排序包缺少對時間值進行排序的功能。

問題描述:

提供的結構體reviews_data有一個名為 date of 的成員輸入時間.時間。使用者定義了自訂切片類型 timeSlice,實作了 Len、Less 和 Swap 方法來對切片進行排序。他們嘗試將reviews_data的映射映射到timeSlice,對切片進行排序,並期望映射按其日期值排序。但是,排序並沒有如預期進行。

解決方案:

對於 Go 1.8 以上版本,可以透過使用 sort.Slice 函數來解決此問題排序。排序。以日期欄位對切片進行排序的新語法為:

sort.Slice(timeSlice, func(i, j int) bool {
    return timeSlice[i].date.Before(timeSlice[j].date)
})
登入後複製

sort.Slice 函數採用要排序的切片和定義比較函數的閉包。在這種情況下,閉包會比較切片中兩個元素的日期值。

說明:

在 Go 1.8 之前,sort.Sort 函數只能是與實作 Sorter 介面的型別一起使用。在 Go 1.8 及更高版本中,引入了 sort.Slice,允許使用者使用閉包對切片進行排序,而無需實作自訂 Sorter 類型。

以上是如何按「time.Time」欄位對 Go 結構體進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板