go语言

Go语言定时器如何设置回调

小樊
81
2024-11-02 17:05:31
栏目: 编程语言

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

0
看了该问题的人还看了