Sobes.tech
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į.