在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
通道中读取数据以处理定时器触发的事件。