CodeBlanks Logo Icon CodeBlanks

context.Background

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ğilse

Kural: 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

main.go
package main

import (
    "context"
    "fmt"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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

Soru
ctx := context.____()
isle(ctx)
Cevap
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

Orta seviye bölümündeki tüm dersler