如何让goroutine在超时后自动退出

您可以使用 time.Aftertime.Tick 来创建一个计时器,并在 goroutine 中进行检查。如果超时,您可以使用 select 语句来等待该计时器的超时信号,然后退出 goroutine。

例如,假设您想要在 10 秒钟后超时退出 goroutine,您可以这样做:

// 创建计时器
timer := time.NewTimer(10 * time.Second)

// 在 goroutine 中运行代码
go func() {
    // 在 select 语句中等待计时器的超时信号
    select {
    case <-timer.C:
        // 超时后,退出 goroutine
        return
    // 您还可以添加其他 case 语句来处理其他事件
    }
}()

// 您还可以使用 timer.Stop() 来停止计时器

另一种选择是使用 time.After 来创建一个计时器,它会在指定的时间后返回一个通道,您可以在 select 语句中等待该通道,如下所示:

// 创建计时器
timeout := time.After(10 * time.Second)

// 在 goroutine 中运行代码
go func() {
    // 在 select 语句中等待计时器的超时信号
    select {
    case <-timeout:
        // 超时后,退出 goroutine
        return
    // 您还可以添加其他 case 语句来处理其他事件
    }
}()

使用 time.Tick 也可以实现类似的功能,但它会在指定的时间间隔内重复发送