在 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():
以上是Go Context — TODO() 與 Background() 不再令人困惑!的詳細內容。更多資訊請關注PHP中文網其他相關文章!