当前位置: 首页 > 面试题库 >

如何按时间排序

欧阳成弘
2023-03-14
问题内容

我正在尝试按其类型为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)

问题是结果没有排序,谁能告诉我问题是什么。


问题答案:

在我看来,它看起来像是:

package main

import (
    "fmt"
    "sort"
    "time"
)

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

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]
}

func main() {
    var reviews_data_map = make(map[string]reviews_data)
    reviews_data_map["1"] = reviews_data{date: time.Now().Add(12 * time.Hour)}
    reviews_data_map["2"] = reviews_data{date: time.Now()}
    reviews_data_map["3"] = reviews_data{date: time.Now().Add(24 * time.Hour)}
    //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)
    }
    fmt.Println(date_sorted_reviews)
    sort.Sort(date_sorted_reviews)
    fmt.Println(date_sorted_reviews)
}

输出:

[{ {63393534000 0 0x1ba3e0} 0  false   0 0} { {63393490800 0 0x1ba3e0} 0  false   0 0} { {63393577200 0 0x1ba3e0} 0  false   0 0}]
[{ {63393490800 0 0x1ba3e0} 0  false   0 0} { {63393534000 0 0x1ba3e0} 0  false   0 0} { {63393577200 0 0x1ba3e0} 0  false   0 0}]


 类似资料:
  • 问题内容: 因此,我的时间戳如下所示: 我将它们放在DataFrame中,并且尝试按升序对其进行排序。我尝试了以下方法。但是,它似乎不起作用 任何帮助表示赞赏。 问题答案: 您只需要确保正确表示格式规范,就可以将其转换为之前的 实际 日期时间。 这比分解组件中的时间戳并按照您的尝试执行多准则排序要直接得多。 演示版

  • 本文向大家介绍MongoDB中如何按时间戳(降序)排序,包括了MongoDB中如何按时间戳(降序)排序的使用技巧和注意事项,需要的朋友参考一下 要按时间戳排序,请在MongoDB中使用sort()。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是按时间戳排序的查询(降序)- 这将产生以下输出-

  • 我有一个dynamodb表,它有一个分区键和排序键。我需要根据列查询表以查找最近的100行。当我检查API时,我必须指定。在这种情况下,我不想查询分区键。我该怎么做? 操作似乎不支持对结果进行排序。 我能想到的一个解决方案是在表中添加一个属性,比如说,并为表中的每一行指定相同的值。然后在表上创建一个GSI,分区键为,时间戳为排序键。然后我可以查询分区键等于的表,并根据对结果进行排序。然而,这个解决

  • 问题内容: 我要显示的最后5个输入的特定ID数据。我的SQL查询是 是DATETIME 它显示按日期而非时间排序的最后5个条目。然后在同一日期按字母顺序排序。 假设我在同一日期有3个条目,并带有差异时间 比方说 查询以上查询后 我得到的是 按日期排序,然后按字母顺序 我想要的是这个.. 还按日期和时间排序… 问题答案: 如果要最后5行(以升序排列),则需要一个子查询: 第10次阅读问题后,这可能是

  • 问题内容: 我将应用程序发布的想法存储在Firestore中。数据像这个 Ideas / {documentID} / IdeaObject 一样存储在Firestore中。问题是,当我检索数据时,它没有按发布时间排序。检索到的构想根据其文档ID的ID来确定,该ID由Firestore自动创建。我在模型类中使用了 ServerTimestamp ,并且在检索它时,我在Firestore引用中使用了