在 Go 中,上下文包有助于管理请求范围的值、取消信号和截止日期。
启动上下文的两种常见方法是 context.TODO() 和 context.Background()。
尽管它们的行为相似,但它们的目的不同。
context.Background() 是默认值。
它通常用在 main、init 或初始化不需要更具体上下文的操作时。
func main() { ctx := context.Background() server := http.Server{Addr: ":8080", BaseContext: func(net.Listener) context.Context { return ctx }} log.Fatal(server.ListenAndServe()) }
在此示例中,context.Background() 用于为 HTTP 服务器建立基础上下文。
context.TODO() 是占位符上下文。当您不确定要提供什么上下文或计划稍后重构时使用它。
func processOrder() { ctx := context.TODO() // Placeholder, decision on context pending err := db.SaveOrder(ctx, orderData) if err != nil { log.Println("Failed to save order:", err) } }
这里,context.TODO()暂时用于数据库操作,直到定义更具体的上下文。
两个函数都返回空上下文,但它们表达不同的意图:
何时使用 context.Background():
何时使用 context.TODO():
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3