Sobes.tech
Senior

Kam naudojamas kontekstas? Kaip jį naudojote praktikoje?

sobes.tech AI

Atsakymas iš AI

Go kalboje context naudojamas signalų, laiko limitų ir kitų reikšmių perdavimui tarp gorutinių, ypač dirbant su užklausomis, laiko limitais ir operacijų atšaukimu.

Praktinis taikymas:

  • Ilgų operacijų atšaukimas uždarius HTTP užklausą.
  • Laiko limito perdavimas, kad operacija neviršytų nustatyto laiko.
  • Metaduomenų perdavimas (pvz., užklausos identifikatoriai) per kvietimų grandinę.

Naudojimo pavyzdys:

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

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

Čia operacija bus nutraukta po 2 sekundžių, net jei ji planuota trukti 5.