Sobes.tech
Senior

Zašto se koristi kontekst? Kako ste ga koristili u praksi?

sobes.tech АИ

Одговор од АИ

U Go jeziku, context se koristi za prenos signala za otkazivanje, vremenskih ograničenja i drugih vrednosti između gorutina, posebno pri radu sa zahtevima, vremenskim ograničenjima i otkazivanjem operacija.

Praktična primena:

  • Otkazivanje dugotrajnih operacija pri zatvaranju HTTP zahteva.
  • Prenos vremenskog ograničenja kako operacija ne bi trajala duže od zadanog vremena.
  • Prenos metapodataka (npr. identifikatora zahteva) kroz lanac poziva.

Primer upotrebe:

func handler(ctx context.Context) {
    select {
    case <-time.After(5 * time.Second):
        fmt.Println("Operacija završena")
    case <-ctx.Done():
        fmt.Println("Operacija otkazana")
    }
}

func main() {
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    handler(ctx)
}

Ovde će operacija biti prekinuta nakon 2 sekunde, čak i ako je planirana za 5.