package clocks import ( "sort" "time" ) type ClockCollection struct { Clocks []Clock } func (clocks *ClockCollection) Sorted(sortOrder string) []Clock { if sortOrder == "natural" { //no-op } else if sortOrder == "chronological" { clocks.SortedChronologically() } else { clocks.SortedAlphabetically() } return clocks.Clocks } func (clocks *ClockCollection) SortedAlphabetically() { sort.Slice(clocks.Clocks, func(i, j int) bool { clock := clocks.Clocks[i] other := clocks.Clocks[j] return clock.Label < other.Label }) } func (clocks *ClockCollection) SortedChronologically() { now := time.Now() sort.Slice(clocks.Clocks, func(i, j int) bool { clock := clocks.Clocks[i] other := clocks.Clocks[j] return clock.ToLocal(now).String() < other.ToLocal(now).String() }) }