Sobes.tech
Junior — Middle

Popište situaci, ve které by bylo odůvodněné a efektivní použití kontextů.

sobes.tech AI

Odpověď od AI

V Go se kontexty (context.Context) používají k řízení životnosti operací, zejména při asynchronních nebo síťových voláních. Například pokud máte HTTP server, který zpracovává požadavky, a chcete zrušit zpracování, pokud klient přeruší spojení nebo pokud časový limit vyprší, použití kontextu bude vhodné.

Příklad:

func handler(w http.ResponseWriter, r *http.Request) {
    ctx := r.Context()
    select {
    case <-time.After(5 * time.Second):
        fmt.Fprintln(w, "Zpracování dokončeno")
    case <-ctx.Done():
        err := ctx.Err()
        fmt.Println("Požadavek zrušen nebo vypršel časový limit:", err)
    }
}

Zde kontext umožňuje zrušit dlouhotrvající operaci, pokud se klient odpojí nebo vyprší čas, což šetří zdroje a zlepšuje odezvu aplikace.