在 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