Таймер: уведомление по расписанию
Каналы легко использовать для реализации одноразовых таймеров.
Пользовательская реализация одноразового таймера может выглядеть следующим образом.
Пришло время поработать с кодом!
На самом деле функция After в time стандартном пакете обеспечивает ту же функциональность, но гораздо более эффективную реализацию
Обрати внимание, <-time.After(aDuration) что текущая горутина перейдет в состояние блокировки, а вызов функции time.Sleep(aDuration) — нет.
Использование <-time.After(aDuration) часто используется в механизме тайм-аута, который мы рассмотрим в следующих главах.