type AtMostEvery … // NewAtMostEvery creates a new AtMostEvery, that will run the method at // most every given duration. func NewAtMostEvery(delay time.Duration) *AtMostEvery { … } // updateLastCall returns true if the lastCall time has been updated, // false if it was too early. func (s *AtMostEvery) updateLastCall() bool { … } // Do will run the method if enough time has passed, and return true. // Otherwise, it does nothing and returns false. func (s *AtMostEvery) Do(fn func()) bool { … }