Ранее мы рассматривали, как можно выполнять код через периоды времени. В данной инструкции будет показано, как выполнить код с задержкой.

Как выполнить код с задержкой?

1. Создайте файл delay.go со следующим содержимым:

Форум Гоферов

Мы работаем над форумом для программистов на Golang. Очень нужны модераторы которые хотят помочь с ответами для новичков и помочь в развитии Go-сообщества.

Go на Форум

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК Go в Telegram

2. Запустите код через go run delay.go в терминале;
3. Посмотрите на результат:

Для единичного выполнения кода с задержкой можно использовать Timer из пакета time. Концепт данного процесса аналогичен тому, что мы задействовали в инструкции для «Запуска разных блоков кода через промежутки времени».

Timer содержит канал C, что поставляет сигналы тиканья через данные промежутки времени. После этого через этот канал не поставляется ни один тик.

Такая же функциональность поставляет функция AfterFunc из пакета time. Это просто упрощает использование. Обратите внимание, что здесь не требуется канал. Код примера использует sync.WaitGroup для ожидания, пока функция не будет выполнена.

В предыдущем примере time.After является последней опцией. Функция возвращает канал, что поставляет сигнал тиканья после данного промежутка. Обратите внимание на разницу между функциями Timer и After. Timer является переиспользуемой структурой (она предоставляет методы Stop и Reset). С другой стороны, функция After может использоваться только один раз, так как она не предоставляет никакой опции для перезапуска.

Понравилась статья?

Поддержи наш проект, чтобы мы могли создать больше хорошего контента!