Delve into a community where programmers unite to discover code snippets, exchange skills, and enhance their programming proficiency. With abundant resources and a supportive community, you'll find everything essential for your growth and success.
package main
import("fmt""time")funcmain(){ firstTimer := time.NewTimer(3* time.Second) value :=<-firstTimer.C // value is a current time fmt.Printf("first timer expired: %v\n", value)// the line printed 3 seconds after running code secondTimer := time.NewTimer(2* time.Second)gofunc(){<-secondTimer.C
fmt.Println("second timer expired")// the line is not printed because the second timer is stopped before expiration}() stop := secondTimer.Stop()// stop second timer before it expiredif stop { fmt.Println("second timer is stopped")}}// $ go run timers.go// first timer expired: 2024-02-09 22:32:57.570649221 +0700 +07 m=+3.002054417// second timer is stopped
Timers allow you to execute one event in the future. You tell the timer how long you want to wait and it provides a channel to be notified at that time. The first timer will wait for 3 seconds.
<-firstTimer.C blocks the timer C channel until a message (current time) is sent indicating that the timer has expired.
If you just want to wait, you can use time.Sleep. One reason a timer can be useful is that you can cancel the timer before it expires.
The first timer expires 3s after the program starts, but the second is stopped before it expires.