📅  最后修改于: 2023-12-03 15:01:01.739000             🧑  作者: Mango
Go语言中的time包提供了一些处理时间的函数和类型。其中,time.AfterFunc()函数可以帮助程序员在指定时间之后运行一段函数。
func AfterFunc(d Duration, f func()) * Timer
AfterFunc()函数接受两个参数:第一个参数d表示从当前时刻开始,需要等待的时间;第二个参数f是一个函数,表示需要在d时间之后执行的任务。
AfterFunc()函数返回一个Timer类型的值,如果需要取消在d时间之后执行的任务,可以通过该值的Stop()方法来取消任务。
在d时间之后,AfterFunc()函数会在新的goroutine中执行f函数。
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("Start")
timer := time.AfterFunc(2*time.Second, func() {
fmt.Println("Hello, World!")
})
time.Sleep(3 * time.Second) // 等待3秒
timer.Stop() // 取消任务
fmt.Println("End")
}
在上述代码中,程序会在开始输出"Start"后,等待2秒后执行匿名函数输出"Hello, World!",然后在3秒后取消该任务,并输出"End"。
time.AfterFunc()函数可以帮助程序员在指定时间之后运行一段函数,并且可以通过Timer类型的值来取消任务。这种方式比使用time.Sleep()函数更灵活,可以在不阻塞当前GORoutine的情况下执行执行任务。