Senior
Mire használják a kontextust? Hogyan használtad a gyakorlatban?
sobes.tech MI
Válasz az MI-től
A Go nyelvben a context a megszakítási jelek, időkorlátok és más értékek átadására szolgál goroutine-ok között, különösen kéréskezelés, időtúllépés és műveletek megszakítása esetén.
Gyakorlati alkalmazás:
- Hosszú műveletek megszakítása HTTP kérés lezárásakor.
- Időkorlát átadása, hogy egy művelet ne tartson tovább a megadott időnél.
- Metaadatok (pl. kérésazonosítók) átadása a hívási láncon keresztül.
Használati példa:
func handler(ctx context.Context) {
select {
case <-time.After(5 * time.Second):
fmt.Println("Művelet befejeződött")
case <-ctx.Done():
fmt.Println("Művelet megszakítva")
}
}
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
handler(ctx)
}
Itt a művelet 2 másodperc múlva megszakad, még akkor is, ha 5 másodpercre van tervezve.