Golang time.After() 函数及示例
在 Go 语言中,时间包提供确定时间和观察时间的功能。 After() 函数用于等待一段时间,然后在返回的通道中传递实际时间。此外,这个函数是在 time 包 中定义的。你需要导入 “time” 包以使用这些函数。
语法:
func After(d Duration) <-chan Time
这里,d 是超时前的时间间隔,chan 是返回当前时间的通道。
返回值:它首先等待指定的时间,然后显示超时。
示例 1:
// 示范使用 After() 函数的 Golang 程序
// 包含主包
package main
// 导入 fmt 和 time
import (
"fmt"
"time"
)
// 创建一个通道
// 使用 var 关键字
var ch chan int
// 主函数
func main() {
// For 循环
for i := 1; i < 6; i++ {
// 输出信息直到循环停止
fmt.Println("****Welcome to GeeksforGeeks***")
fmt.Println("A CS-Portal!")
}
// Select 语句
select {
// 使用 case 语句在通道上接收或发送操作,并在其上调用 After() 方法
case <-time.After(3 * time.Second):
// 超时后打印信息
fmt.Println("Time Out!")
}
}
输出:
****Welcome to GeeksforGeeks***
A CS-Portal!
****Welcome to GeeksforGeeks***
A CS-Portal!
****Welcome to GeeksforGeeks***
A CS-Portal!
****Welcome to GeeksforGeeks***
A CS-Portal!
****Welcome to GeeksforGeeks***
A CS-Portal!
Time Out! // 以上代码中规定了 3 秒后超时并显示此内容
在上面的示例中,我们在 select 语句下使用了 “case” 语句,在通道上发送操作。此外,这里的超时将在 for 循环执行后的 3 秒显示。
示例 2:
// 示范使用 After() 函数的 Golang 程序
// 包含主包
package main
// 导入 fmt 和 time
import (
"fmt"
"time"
)
// 主函数
func main() {
// 创建一个通道
// 使用 make 关键字
channel := make(chan string, 2)
// Select 语句
select {
// 使用 case 语句在通道上接收或发送操作
case output := <-channel:
fmt.Println(output)
// 在通道上调用 After() 方法
case <-time.After(5 * time.Second):
// 5 秒后打印信息
fmt.Println("Its timeout..")
}
}
输出:
Its timeout..
这里,我们使用 “make” 关键字创建一个通道,然后像上面的示例那样,使用 select 语句下的 case 语句两次。第一个用于返回输出,第二个用于在通道上调用 After() 方法。之后,超时在预定时间内显示。