Senior
K čemu je kontext? Jak jste ho použili v praxi?
sobes.tech AI
Odpověď od AI
V jazyce Go se context používá k přenosu signálů o zrušení, časových limitů a dalších hodnot mezi gorutinami, zejména při práci s požadavky, časovými limity a zrušením operací.
Praktické použití:
- Zrušení dlouhých operací při uzavření HTTP požadavku.
- Přenos časového limitu, aby operace nepřesáhla stanovený čas.
- Přenos metadat (například ID požadavků) přes řetězec volání.
Příklad použití:
func handler(ctx context.Context) {
select {
case <-time.After(5 * time.Second):
fmt.Println("Operace dokončena")
case <-ctx.Done():
fmt.Println("Operace zrušena")
}
}
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
handler(ctx)
}
Operace bude přerušena po 2 sekundách, i když je naplánována na 5.