📜  Golang 中的 time.AfterFunc()函数示例(1)

📅  最后修改于: 2023-12-03 15:01:01.739000             🧑  作者: Mango

Golang中的time.AfterFunc()函数

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的情况下执行执行任务。