按時間字段對結構體進行排序
您正在嘗試按Go 中的時間字段對結構體進行排序,其中遇到了問題。您提供的程式碼片段包括使用您的reviews_data結構切片和地圖的自訂排序實作:
type timeSlice []reviews_data func (p timeSlice) Len() int { return len(p) } func (p timeSlice) Less(i, j int) bool { return p[i].date.Before(p[j].date) } func (p timeSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
但是,您報告的問題是結果未正確排序。這可能是由於以下幾個原因造成的:
改進的解決方案(Go 1.8 及更高版本):
使用 Go 1.8 中引入的 sort.Slice函數,您可以簡化您的排序程式碼:
sort.Slice(timeSlice, func(i, j int) bool { return timeSlice[i].date.Before(timeSlice[j].date) })
這個改進的解決方案使用標準庫的排序功能,確保排序過程更可靠、更有效率。
以上是如何按 time.Time 欄位正確排序 Go 結構體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!