Sobes.tech
Junior — Middle

Írjon le egy olyan helyzetet, amikor a kontextusok használata indokolt és hatékony lenne.

sobes.tech MI

Válasz az MI-től

Go-ban a kontextusok (context.Context) az operációk életidejének kezelésére szolgálnak, különösen aszinkron vagy hálózati hívások esetén. Például, ha van egy HTTP szervered, amely kérdéseket kezel, és szeretnéd megszakítani a feldolgozást, ha a kliens megszakítja a kapcsolatot vagy ha az időkorlát lejár, akkor a kontextus használata megfelelő.

Példa:

func handler(w http.ResponseWriter, r *http.Request) {
    ctx := r.Context()
    select {
    case <-time.After(5 * time.Second):
        fmt.Fprintln(w, "Feldolgozás befejeződött")
    case <-ctx.Done():
        err := ctx.Err()
        fmt.Println("Kérés megszakítva vagy időkorlát lejárt:", err)
    }
}

Itt a kontextus lehetővé teszi, hogy megszakítsunk egy hosszú műveletet, ha a kliens megszakítja a kapcsolatot vagy az idő lejár, ez erőforrásokat takarít meg és javítja az alkalmazás reakcióképességét.