Sobes.tech
Junior — Middle

Descrieți o situație în care utilizarea contextelor ar fi justificată și eficientă.

sobes.tech AI

Răspuns de la AI

În Go, contexte (context.Context) sunt utilizate pentru a gestiona durata de viață a operațiunilor, în special în apelurile asincrone sau de rețea. De exemplu, dacă aveți un server HTTP care procesează solicitări și doriți să anulați procesarea dacă clientul întrerupe conexiunea sau dacă timpul de așteptare depășește limita, utilizarea contextului va fi adecvată.

Exemplu:

func handler(w http.ResponseWriter, r *http.Request) {
    ctx := r.Context()
    select {
    case <-time.After(5 * time.Second):
        fmt.Fprintln(w, "Procesare finalizată")
    case <-ctx.Done():
        err := ctx.Err()
        fmt.Println("Cererea a fost anulată sau timpul de așteptare a expirat:", err)
    }
}

Aici, contextul permite anularea unei operațiuni lungi dacă clientul s-a deconectat sau dacă timpul de așteptare a expirat, economisind resurse și îmbunătățind capacitatea de răspuns a aplicației.