Sobes.tech
Junior — Middle

Descrivi una situazione in cui l'uso dei contesti sarebbe giustificato ed efficace.

sobes.tech AI

Risposta dell'AI

In Go, i contesti (context.Context) vengono utilizzati per gestire la durata delle operazioni, specialmente nelle chiamate asincrone o di rete. Ad esempio, se hai un server HTTP che elabora richieste e vuoi annullare l'elaborazione se il client interrompe la connessione o se il limite di tempo viene superato, l'uso del contesto sarà appropriato.

Esempio:

func handler(w http.ResponseWriter, r *http.Request) {
    ctx := r.Context()
    select {
    case <-time.After(5 * time.Second):
        fmt.Fprintln(w, "Elaborazione completata")
    case <-ctx.Done():
        err := ctx.Err()
        fmt.Println("Richiesta annullata o timeout superato:", err)
    }
}

Qui, il contesto permette di annullare un'operazione lunga se il client si disconnette o se scade il timeout, risparmiando risorse e migliorando la reattività dell'applicazione.