这里的答案Sorting by time.Time in Golang
尝试对带有映射的辅助数组进行排序
type timeSlice []reviews_data
可以在不创建此辅助数据结构的情况下对带有日期的对象的golang切片进行排序吗?
给出类似的结构
type SortDateExample struct {
sortByThis time.Time
id string
}
然后切片初始化了
之类的东西var datearray = var alerts = make([]SortDateExample, 0)
dateSlice = append(dateSlice,newSortDateExmple)
dateSlice = append(dateSlice,newSortDateExmple2)
dateSlice = append(dateSlice,newSortDateExmple3)
如何按时间字段sortByThis对数组进行排序?
答案 0 :(得分:2)
使用Go 1.8及更高版本
sort.Slice(dateSlice, func(i, j int) bool {
return dateSlice[i].sortByThis.Before(dateSlice[j].sortByThis)
})
https://golang.org/pkg/sort/#Slice
Go低于1.8
在这种情况下,您不需要map
,但确实需要为数组定义类型:
type SortedDateExampleArray []SortDateExample
然后,您需要该数组类型来实现sort.Interface
中的方法。
func (a SortedDateExampleArray) Len() int {
return len(a)
}
func (a SortedDateExampleArray) Less(i, j int) bool {
return a[i].sortByThis.Before(a[j].sortByThis)
}
func (a SortedDateExampleArray) Swap(i, j int) {
a[i], a[j] = a[j], a[i]
}
然后您可以使用sort.Sort
对自定义数组进行排序。