Ticker содержит канал, который поставляет "тики" часов с интервалами.
type Ticker struct {
C <-chan Time // Канал, по которому доставляются тики.
// содержит отфильтрованные или неэкспортированные поля
}
Функция NewTicker
func NewTicker(d Duration) *Ticker
NewTicker возвращает новый Ticker, содержащий канал, который будет отправлять время с периодом, заданным аргументом продолжительности. Он корректирует интервалы или сбрасывает тики, чтобы восполнить медленные приемники. Продолжительность d должна быть больше нуля; если нет, NewTicker будет паниковать. Остановите тикер, чтобы освободить связанные ресурсы.
Пример использования Ticker
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
done := make(chan bool)
go func() {
time.Sleep(10 * time.Second)
done <- true
}()
for {
select {
case <-done:
fmt.Println("Готово!")
return
case t := <-ticker.C:
fmt.Println("Текущее время: ", t)
}
}
}
Вывод:
Текущее время: 2020-07-26 22:03:37.925067 +0500 +05 m=+1.008175801
Текущее время: 2020-07-26 22:03:38.9258884 +0500 +05 m=+2.008997201
Текущее время: 2020-07-26 22:03:39.9282 +0500 +05 m=+3.011308801
Текущее время: 2020-07-26 22:03:40.9290208 +0500 +05 m=+4.012129601
Текущее время: 2020-07-26 22:03:41.9298391 +0500 +05 m=+5.012947901
Текущее время: 2020-07-26 22:03:42.9313325 +0500 +05 m=+6.014441301
Текущее время: 2020-07-26 22:03:43.9330786 +0500 +05 m=+7.016187401
Текущее время: 2020-07-26 22:03:44.9390601 +0500 +05 m=+8.022168901
Текущее время: 2020-07-26 22:03:45.9320627 +0500 +05 m=+9.015171501
Текущее время: 2020-07-26 22:03:46.941485 +0500 +05 m=+10.024593801
Готово!
Метод Stop
func (t *Ticker) Stop()
Stop отключает тикер. После остановки никакие тики больше не будут отправляться. Stop не закрывает канал, чтобы предотвратить чтение из канала конкурентной goroutine ошибочного "тика".
Читайте также:
- Пакет time в Golang, тип Location
- Пакет time в Golang, тип Month
- Пакет time в Golang, функции After, Sleep, Tick
Комментариев нет:
Отправить комментарий