Golang time.AfterFunc() 函数及示例
在 Go 语言中,time 包提供了确定和显示时间的功能。AfterFunc() 函数在 Go 语言中用于等待时间间隔结束之后,在其自己的 Go 协程中调用定义的函数“f” 。此外,该函数定义在 time 包下。在此,您需要导入 “time” 包才能使用这些函数。
语法:
func AfterFunc(d Duration, f func()) *Timer
这里,*Timer 是指向计时器的指针。
返回值:它返回计时器,然后使用它的 Stop() 方法来取消调用。
示例1:
// 演示 AfterFunc() 函数的 Golang 程序
// 包含主要函数
package main
// 导入 fmt 和 time 包
import (
"fmt"
"time"
)
// 主函数
func main() {
// 对 AfterFunc() 方法进行时间参数的定义
DurationOfTime := time.Duration(3) * time.Second
// 对 AfterFunc() 方法进行函数参数的定义
f := func() {
// 当 AfterFunc() 方法在上述时间内调用时,将打印
fmt.Println("Function called by "+
"AfterFunc() after 3 seconds")
}
// 使用其参数调用 AfterFunc() 方法
Timer1 := time.AfterFunc(DurationOfTime, f)
// 使用 Timer1 调用 stop 方法
defer Timer1.Stop()
// 调用 sleep 方法
time.Sleep(10 * time.Second)
}
输出:
Function called by AfterFunc() after 3 seconds
在这里,输出在 3 秒后返回,然后返回的计时器使用 Stop() 方法取消调用。然后,在睡眠结束的持续时间后,程序退出。
示例2:
// 演示 AfterFunc() 函数的 Golang 程序
// 包含主要函数
package main
// 导入 fmt 和 time 包
import (
"fmt"
"time"
)
// 主函数
func main() {
// 使用 make 关键字创建渠道
mychan := make(chan int)
// 使用其参数调用 AfterFunc() 方法
time.AfterFunc(6*time.Second, func() {
// 在过去的一段时间后打印
fmt.Println("6 seconds over....")
// 循环在此时停止
mychan <- 30
})
// 调用 for 循环
for {
// select 语句
select {
// case 语句
case n := <-mychan:
// 循环停止后打印
fmt.Println(n, "is arriving")
fmt.Println("Done!")
return
// 默认返回
default:
// 打印直到循环停止
fmt.Println("time to wait")
// 等待 3 秒钟
time.Sleep(3 * time.Second)
}
}
}
输出:
time to wait
time to wait
6 seconds over....
30 is arriving
Done!
在上面的示例中,在经过一定的时间后,通道返回其输出然后程序退出。