可以使用 time 包中的 time.After() 函数来实现。该函数会在指定的时间后返回一个信道,我们可以使用 select 语句来监听这个信道,如果在指定时间内有数据到来,则退出循环。

示例代码:

package main

import (
    "fmt"
    "time"
)

func main() {
    ticker := time.NewTicker(time.Second) // 定义一个每秒发送一次信号的 ticker
    stop := time.NewTimer(3 * time.Second) // 定义一个 3 秒后触发的定时器

    for {
        select {
        case <-ticker.C:
            fmt.Println("tick")
        case <-stop.C:
            ticker.Stop() // 停止 ticker
            fmt.Println("stop")
            return
        }
    }
}

在上面的代码中,我们定义了一个每秒发送一次信号的 ticker 和一个 3 秒后触发的定时器。在循环中,我们使用 select 语句监听这两个信道的数据,并在 3 秒后退出循环。在退出循环前,我们还需要手动停止 ticker。

Golang 循环超时设置 - 使用 time.After() 实现 3 秒结束

原文地址: https://www.cveoy.top/t/topic/lrOB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录