As vezes, é necessário executar código em algum momento futuro, ou repetidamente com algum intervalo. Go conta com as ferramentas nativas timer e ticker. Ambos os recursos tornam a tarefa fácil. Primeiro será apresentado o recurso timer e posteriormente o ticker. |
|
package main |
|
import ( "fmt" "time" ) |
|
func main() { |
|
Timers representam um único evento no futuro. Ao timer é informado quanto tempo se pretende esperar e o recurso providencia um canal que será notificado ao esgotar o tempo estipulado. Este timer irá aguardar 2 segundos. |
timer1 := time.NewTimer(2 * time.Second) |
O |
<-timer1.C fmt.Println("Timer 1 fired") |
Se a intenção for apenas aguardar, é possível utilizar
|
timer2 := time.NewTimer(time.Second) go func() { <-timer2.C fmt.Println("Timer 2 fired") }() stop2 := timer2.Stop() if stop2 { fmt.Println("Timer 2 stopped") } |
Ao dar tempo suficiente para o |
time.Sleep(2 * time.Second) } |
O primeiro timer será disparado aproximadamente 2 segundos após a execução do código. Mas o segundo deve parar antes de ter a chance de disparar. |
$ go run timers.go Timer 1 fired Timer 2 stopped |
Próximo exemplo: Tickers.