Sobes.tech
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.