Dalam Go, pakej konteks membantu mengurus nilai skop permintaan, isyarat pembatalan dan tarikh akhir.
Dua cara biasa untuk memulakan konteks ialah context.TODO() dan context.Background().
Walaupun mereka berkelakuan serupa, mereka mempunyai tujuan yang berbeza.
context.Background() ialah lalai apabila anda tidak memerlukan sebarang pengendalian khas (seperti pembatalan atau tarikh akhir).
Ia sering digunakan dalam main, init atau semasa memulakan operasi yang tidak memerlukan konteks yang lebih khusus.
func main() { ctx := context.Background() server := http.Server{Addr: ":8080", BaseContext: func(net.Listener) context.Context { return ctx }} log.Fatal(server.ListenAndServe()) }
Dalam contoh ini, context.Background() digunakan untuk mewujudkan konteks asas untuk pelayan HTTP.
context.TODO() ialah konteks pemegang tempat. Gunakannya apabila anda tidak pasti konteks yang hendak diberikan atau semasa merancang untuk memfaktorkan semula nanti.
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) } }
Di sini, context.TODO() digunakan buat sementara waktu untuk operasi pangkalan data sehingga konteks yang lebih khusus ditentukan.
Kedua-dua fungsi mengembalikan konteks kosong, tetapi ia menyatakan niat yang berbeza:
Bila Gunakan konteks.Latar Belakang():
Bila Gunakan konteks.TODO():
Atas ialah kandungan terperinci Go Context — TODO() vs Background() Tidak lagi mengelirukan!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!