在Go语言中,你可以使用time
包中的Timer
类型来创建一个定时器,并在定时器触发时执行回调函数。以下是一个简单的示例:
package main import ( "fmt" "time" ) func main() { // 创建一个定时器,设置5秒后触发 timer := time.NewTimer(5 * time.Second) // 等待定时器触发 <-timer.C // 定时器触发后执行的回调函数 fmt.Println("定时器触发,执行回调函数") }
在这个示例中,我们创建了一个定时器,设置5秒后触发。然后我们使用<-timer.C
来阻塞主线程,直到定时器触发。当定时器触发时,会执行回调函数(在这个例子中是打印一条消息)。
如果你需要在定时器触发之前取消定时器,可以使用timer.Stop()
方法。例如:
package main import ( "fmt" "time" ) func main() { // 创建一个定时器,设置5秒后触发 timer := time.NewTimer(5 * time.Second) // 在2秒后取消定时器 time.Sleep(2 * time.Second) timer.Stop() // 检查定时器是否已取消 if !timer.Stop() { // 定时器已经触发,获取其完成时间 <-timer.C } fmt.Println("定时器已取消或已触发") }
在这个示例中,我们在2秒后取消了定时器。如果定时器已经被触发,timer.Stop()
将返回false
,此时我们可以从timer.C
通道中读取数据以处理定时器触发的事件。