Помимо операций с датой и временем пакет time также предоставляет поддержку для выполнения кода через определенные промежутки времени или с задержкой. Обычно это проверка состояния приложения, его активности или любая другая периодическая работа, которая может быть имплементирована подобным образом.

Как запускать код с задержкой в Golang?

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

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

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

Go на Форум

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

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

Go в ВК Go в Telegram

2. Запустите код через go run ticker.go в главном терминале;
3. Подождите несколько секунд, затем нажмите Ctrl + C для отправки SIGINT сигнала;
4. Посмотрите на следующий результат:

Ticker содержит канал C, что отвечает за периодический отсчет. Экземпляр остается с данным интервалом между каждым тиканьем. Интервал определяется через значение time.Duration.

Код, что должен выполняться через промежутки, выполняется в бесконечном цикле в горутине. Чтение из канала Ticker блокирует цикл до тех пор, пока тиканье не будет доставлено.

Обратите внимание, что Ticker останавливается через вызов метода Stop, канал C не закрывается, он просто перестает поставлять тиканье. По этой причине предыдущий код содержит конструкцию select, где канал остановки может доставить сигнал остановки. В таком случае можно добиться элегантного закрытия.