Junior — Middle
Aprašykite situaciją, kurioje kontekstų naudojimas būtų pateisinamas ir veiksmingas.
sobes.tech AI
Atsakymas iš AI
Go kalboje kontekstai (context.Context) naudojami operacijų gyvavimo laiko valdymui, ypač asinchroninėse ar tinklo iškvietimuose. Pavyzdžiui, jei turite HTTP serverį, kuris apdoroja užklausas, ir norite atšaukti apdorojimą, jei klientas nutraukia ryšį arba jei laukimo laikas viršija limitą, konteksto naudojimas bus tinkamas.
Pavyzdys:
func handler(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
select {
case <-time.After(5 * time.Second):
fmt.Fprintln(w, "Apdorojimas baigtas")
case <-ctx.Done():
err := ctx.Err()
fmt.Println("Užklausa atšaukta arba laiko limitas pasibaigė:", err)
}
}
Čia kontekstas leidžia atšaukti ilgą operaciją, jei klientas atsijungia arba laikas pasibaigia, kas taupo išteklius ir gerina programos reagavimo greitį.