Created
May 4, 2017 04:04
-
-
Save xigang/827e342fc2580198f625ce272257ef37 to your computer and use it in GitHub Desktop.
Sorting by time.Time in Golang
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment