【发布时间】:2022-03-23 18:33:50
【问题描述】:
我正在尝试按类型为 time.Time 的成员对 Go 中的结构进行排序。 结构如下。
type reviews_data struct {
review_id string
date time.Time
score int
firstname string
anonymous bool
review_text string
title_text string
rating float64
upcount int
}
我有以下排序功能
type timeSlice []reviews_data
// Forward request for length
func (p timeSlice) Len() int {
return len(p)
}
// Define compare
func (p timeSlice) Less(i, j int) bool {
return p[i].date.Before(p[j].date)
}
// Define swap over an array
func (p timeSlice) Swap(i, j int) {
p[i], p[j] = p[j], p[i]
}
地图定义如下
var reviews_data_map = make(map[string]reviews_data)
地图被值填充后,地图按值排序如下
//Sort the map by date
date_sorted_reviews := make(timeSlice, 0, len(reviews_data_map))
for _, d := range reviews_data_map {
date_sorted_reviews = append(date_sorted_reviews, d)
}
sort.Sort(date_sorted_reviews)
问题是结果没有排序。谁能告诉我是什么问题。
【问题讨论】:
-
你确定它们没有排序吗?您的排序代码是正确的。
-
这是排序前的输出 2014-04-16 19:57:22.096 +0000 UTC 2014-04-15 20:08:07.226 +0000 UTC 2014-04-15 20:15:16.825 +0000 UTC 2014-04-15 20:17:28.726 +0000 UTC 排序后 2014-04-15 20:15:16.825 +0000 UTC 2014-04-15 20:08:07.226 +0000 UTC 2014-04-15 20 :17:28.726 +0000 UTC 2014-04-16 19:57:22.096 +0000 UTC
-
您没有给我们一个简短的工作程序来说明您的问题。例如,请参阅我的答案。
-
这是一个工作程序,只是说输出没有排序我添加了一个打印语句。这也是一个巨大程序的一部分。所以我刚刚提到了必要的部分。
-
我无法从您的问题中复制代码并进行编译。这不是一个工作程序。有关工作程序的示例,请参阅我的答案。
标签: go