Last active
May 17, 2017 05:48
-
-
Save xigang/1eac9ce3add7ea8757808fda5cc42cd9 to your computer and use it in GitHub Desktop.
Sorting by time.Time in Golang
This file contains hidden or 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) | |
} | |
//sort struct | |
type byName []cli.Command | |
func (a byName) Len() int { return len(a) } | |
func (a byName) Swap(i, j int) { a[i], a[j] = a[j], a[i] } | |
func (a byName) Less(i, j int) bool { return a[i].Name < a[j].Name } | |
var dockerCommands []cli.Command | |
// TODO(tiborvass): do not show 'daemon' on client-only binaries | |
func init() { | |
for _, cmd := range cli.DockerCommands { | |
dockerCommands = append(dockerCommands, cmd) | |
} | |
sort.Sort(byName(dockerCommands)) | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment