Sobes.tech
Senior

Co je to kontext (context) v Go a k čemu slouží?

sobes.tech AI

Odpověď od AI

V Go je context balíček a typ, který se používá k přenosu signálů o zrušení, časových limitů a dalších důležitých dat mezi gorutinami.

Hlavní funkce context:

  • Umožňuje zrušit operace (například dotazy na databázi nebo HTTP) při dosažení časového limitu nebo při zrušení uživatelem.
  • Přenáší časové limity (deadlines) pro operace.
  • Umožňuje přenášet hodnoty mezi funkcemi (například identifikátory požadavků).

Příklad použití:

ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()

select {
case result := <-doWork(ctx):
    fmt.Println("Výsledek:", result)
case <-ctx.Done():
    fmt.Println("Operace zrušena nebo vypršel časový limit")
}

Zde je ctx předáno funkci doWork, která může přerušit svou práci, pokud je kontext zrušen nebo vyprší časový limit. To pomáhá řídit životnost operací a zdrojů v konkurenčních programech.