package main
import "fmt"
import "time"
import "sort"
type timeSlice []reviews_data
type reviews_data struct {
review_id string
score int
firstname string
anonymous bool
review_text string
title_text string
rating float64
upcount int
}
func main(){
events
:= make
([]time.
Time, 2) // Create slice of two times events
[0], _
= time.
Parse("15:04", "04:30") // 4:30AM events
[1], _
= time.
Parse("15:04", "15:12") // 3:12PM
reviews_data_map := make(map[string]reviews_data)
reviews_data_map["1"] = reviews_data{date:events[0], score: 2} // 4:30AM
reviews_data_map["2"] = reviews_data{date:events[1], score: 1} // 3:12PM
//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(timeSlice(date_sorted_reviews))
fmt.Println(date_sorted_reviews)
for _, d := range date_sorted_reviews {
fmt.Println(d.date)
}
}
// Define compare
func (p timeSlice) Less(i, j int) bool {
return p[i].date.After(p[j].date)
}
// Define swap over an array
func (p timeSlice) Swap(i, j int) {
p[i], p[j] = p[j], p[i]
}
func (p timeSlice) Len() int {
return len(p)
}
cGFja2FnZSBtYWluCmltcG9ydCAiZm10IgppbXBvcnQgInRpbWUiCmltcG9ydCAic29ydCIKCgp0eXBlIHRpbWVTbGljZSBbXXJldmlld3NfZGF0YQoKdHlwZSByZXZpZXdzX2RhdGEgc3RydWN0IHsKcmV2aWV3X2lkIHN0cmluZwpkYXRlIHRpbWUuVGltZQpzY29yZSBpbnQKZmlyc3RuYW1lIHN0cmluZwphbm9ueW1vdXMgYm9vbApyZXZpZXdfdGV4dCBzdHJpbmcKdGl0bGVfdGV4dCBzdHJpbmcKcmF0aW5nIGZsb2F0NjQKdXBjb3VudCBpbnQKCn0KCmZ1bmMgbWFpbigpewoJZXZlbnRzIDo9IG1ha2UoW110aW1lLlRpbWUsIDIpIC8vIENyZWF0ZSBzbGljZSBvZiB0d28gdGltZXMKCWV2ZW50c1swXSwgXyA9IHRpbWUuUGFyc2UoIjE1OjA0IiwgIjA0OjMwIikgLy8gNDozMEFNCglldmVudHNbMV0sIF8gPSB0aW1lLlBhcnNlKCIxNTowNCIsICIxNToxMiIpIC8vIDM6MTJQTQoKCXJldmlld3NfZGF0YV9tYXAgOj0gbWFrZShtYXBbc3RyaW5nXXJldmlld3NfZGF0YSkKCXJldmlld3NfZGF0YV9tYXBbIjEiXSA9IHJldmlld3NfZGF0YXtkYXRlOmV2ZW50c1swXSwgc2NvcmU6IDJ9IC8vIDQ6MzBBTQoJcmV2aWV3c19kYXRhX21hcFsiMiJdID0gcmV2aWV3c19kYXRhe2RhdGU6ZXZlbnRzWzFdLCBzY29yZTogMX0gLy8gMzoxMlBNCi8vU29ydCB0aGUgbWFwIGJ5IGRhdGUKCWRhdGVfc29ydGVkX3Jldmlld3MgOj0gbWFrZSh0aW1lU2xpY2UsIDAsIGxlbihyZXZpZXdzX2RhdGFfbWFwKSkKCWZvciBfLCBkIDo9IHJhbmdlIHJldmlld3NfZGF0YV9tYXAgewoJCWRhdGVfc29ydGVkX3Jldmlld3MgPSBhcHBlbmQoZGF0ZV9zb3J0ZWRfcmV2aWV3cywgZCkKCX0KCglmbXQuUHJpbnRsbihkYXRlX3NvcnRlZF9yZXZpZXdzKQoJCglzb3J0LlNvcnQodGltZVNsaWNlKGRhdGVfc29ydGVkX3Jldmlld3MpKQoKCWZtdC5QcmludGxuKGRhdGVfc29ydGVkX3Jldmlld3MpCglmb3IgXywgZCA6PSByYW5nZSBkYXRlX3NvcnRlZF9yZXZpZXdzIHsKCWZtdC5QcmludGxuKGQuZGF0ZSkKCX0KfQoKLy8gRGVmaW5lIGNvbXBhcmUKZnVuYyAocCB0aW1lU2xpY2UpIExlc3MoaSwgaiBpbnQpIGJvb2wgewpyZXR1cm4gcFtpXS5kYXRlLkFmdGVyKHBbal0uZGF0ZSkKfQoKLy8gRGVmaW5lIHN3YXAgb3ZlciBhbiBhcnJheQpmdW5jIChwIHRpbWVTbGljZSkgU3dhcChpLCBqIGludCkgewpwW2ldLCBwW2pdID0gcFtqXSwgcFtpXQp9CgpmdW5jIChwIHRpbWVTbGljZSkgTGVuKCkgaW50IHsKcmV0dXJuIGxlbihwKQp9