fork download
  1. package main
  2. import "fmt"
  3. import "time"
  4. import "sort"
  5.  
  6.  
  7. type timeSlice []reviews_data
  8.  
  9. type reviews_data struct {
  10. review_id string
  11. date time.Time
  12. score int
  13. firstname string
  14. anonymous bool
  15. review_text string
  16. title_text string
  17. rating float64
  18. upcount int
  19.  
  20. }
  21.  
  22. func main(){
  23. events := make([]time.Time, 2) // Create slice of two times
  24. events[0], _ = time.Parse("15:04", "04:30") // 4:30AM
  25. events[1], _ = time.Parse("15:04", "15:12") // 3:12PM
  26.  
  27. reviews_data_map := make(map[string]reviews_data)
  28. reviews_data_map["1"] = reviews_data{date:events[0], score: 2} // 4:30AM
  29. reviews_data_map["2"] = reviews_data{date:events[1], score: 1} // 3:12PM
  30. //Sort the map by date
  31. date_sorted_reviews := make(timeSlice, 0, len(reviews_data_map))
  32. for _, d := range reviews_data_map {
  33. date_sorted_reviews = append(date_sorted_reviews, d)
  34. }
  35.  
  36. fmt.Println(date_sorted_reviews)
  37.  
  38. sort.Sort(timeSlice(date_sorted_reviews))
  39.  
  40. fmt.Println(date_sorted_reviews)
  41. for _, d := range date_sorted_reviews {
  42. fmt.Println(d.date)
  43. }
  44. }
  45.  
  46. // Define compare
  47. func (p timeSlice) Less(i, j int) bool {
  48. return p[i].date.After(p[j].date)
  49. }
  50.  
  51. // Define swap over an array
  52. func (p timeSlice) Swap(i, j int) {
  53. p[i], p[j] = p[j], p[i]
  54. }
  55.  
  56. func (p timeSlice) Len() int {
  57. return len(p)
  58. }
Success #stdin #stdout 0s 420736KB
stdin
Standard input is empty
stdout
[{ {-31606200 0 0x8116420} 2  false   0 0} { {-31567680 0 0x8116420} 1  false   0 0}]
[{ {-31567680 0 0x8116420} 1  false   0 0} { {-31606200 0 0x8116420} 2  false   0 0}]
0000-01-01 15:12:00 +0000 UTC
0000-01-01 04:30:00 +0000 UTC