package utils import "time" // Clock is an interface for a clock type Clock interface { Now() time.Time After(d time.Duration) <-chan time.Time } // RealClock is the implementation of a clock for production code type RealClock struct{} // Now return the current time func (RealClock) Now() time.Time { return time.Now() } // After return a channel receiving the time after the defined duration func (RealClock) After(d time.Duration) <-chan time.Time { return time.After(d) }