Spesso ci troviamo nella situazione di voler eseguire del codice Go in un certo istante nel futuro, oppure ripeterne l’esecuzione ad intervalli fissati. Le funzioni built-in di Go timer e ticker risolvono questi problemi facilmente. Vedremo prima i timer e a seguire i ticker. |
|
package main
|
|
import "time"
import "fmt"
|
|
func main() {
|
|
I timer rappresentano un singolo evento nel futuro. Si indica al timer quanto si vuole attendere e questo ci fornisce un channel sul quale riceveremo una notifica dopo il tempo desiderato. In questo caso si aspettano due secondi. |
timer1 := time.NewTimer(time.Second * 2)
|
Il comando |
<-timer1.C
fmt.Println("Timer 1 scaduto")
|
Se si vuole semplicemente aspettare del tempo è
possibile utilizzare la funzione |
timer2 := time.NewTimer(time.Second)
go func() {
<-timer2.C
fmt.Println("Timer 2 scaduto")
}()
stop2 := timer2.Stop()
if stop2 {
fmt.Println("Timer 2 fermato")
}
}
|
Il primo timer scatterà dopo circa 2 secondi dall’avvio del programma, mentre il secondo dovrebbe fermarsi prima avere il tempo di scattare. |
$ go run timers.go
Timer 1 scaduto
Timer 2 fermato
|
Prossimo esempio: Ticker.