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.