ZBLOG

golang 识别 ctx 超时

在 Go 中,识别 context.Context 是否超时通常是通过使用 ctx.Err() 方法来实现的。具体来说,如果上下文由于超时或取消而失效,ctx.Err() 将返回一个非 nil 的错误。以下是一个简单的示例代码,展示如何处理超时情况:

package main

import (
    "context"
    "fmt"
    "time"
)

func main() {
    // 创建一个带有超时时间的上下文
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()

    // 模拟一些处理
    select {
    case <-time.After(3 * time.Second): // 模拟长时间运行的操作
        fmt.Println("Operation completed")
        
    case <-ctx.Done(): // 上下文被取消或超时
        if err := ctx.Err(); err != nil {
            fmt.Println("Context error:", err)
        }
    }
}

在上面的代码中,我们创建了一个具有 2 秒超时的上下文,并在 select 语句中等待长时间运行的操作完成。如果该操作超过了 2 秒,上下文将被取消,程序会执行到 case <-ctx.Done(): 分支,从而可以检查并处理上下文错误。

在实际应用中,可以根据需要调整超时时间,并根据业务逻辑决定如何处理超时情况。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=18715

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?