context.Background
- Go kursu
- Orta seviye
- Ders 29/80
- 4 dk
context paketinin temelini ve Background'u öğrenirsin.
context paketi
context.Context, bir işin iptal sinyalini, son tarihini ve istek kapsamlı değerlerini fonksiyonlar ve goroutine'ler boyunca taşır. Her zincirin bir kökü vardır:
ctx := context.Background() // main, init, testler
ctx := context.TODO() // hangi ctx kullanılacağı henüz belli değilseKural: context fonksiyonun ilk parametresidir ve adı ctx'tir; struct alanında saklanmaz.
Done ve Err
Her context iki temel yöntem sunar: Done() iptal edilince kapanan bir kanal, Err() ise iptal nedenini (context.Canceled veya context.DeadlineExceeded) döndürür. Background asla iptal edilmez; Done() nil döner.
select {
case <-ctx.Done():
return ctx.Err()
case v := <-sonuc:
return v
}Uygulama Kök context
ctx := context.Background() oluştur. ctx.Err() değerini ve ctx.Done() == nil sonucunu tek satırda yazdır.
Başlangıç kodu
package main
import (
"context"
"fmt"
)
func main() {
// buraya yaz
}Örnek çözüm
package main
import (
"context"
"fmt"
)
func main() {
ctx := context.Background()
fmt.Println(ctx.Err(), ctx.Done() == nil)
}Beklenen çıktı
<nil> true
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 HTTP işleyicisinde hangi context kullanılır?
- context.TODO()
- nil
- r.Context() Doğru cevap
- context.Background()
Açıklama: İsteğin context'i istemci bağlantıyı kapatınca iptal olur; Background kullanmak bu sinyali kaybettirir.
2 Kök context
ctx := context.____()
isle(ctx)
ctx := context.Background()
isle(ctx)
Açıklama: context.Background boş, iptal edilmeyen kök context'tir.
3 context kavramları
| Kavram | Anlamı |
|---|---|
Background() |
Kök |
TODO() |
Geçici yer tutucu |
Done() |
İptal kanalı |
Err() |
İptal nedeni |