Sobes.tech
Junior — Middle

Jaká je role a účel kontextu v jazyce Go?

sobes.tech AI

Odpověď od AI

V jazyce Go se kontext (context.Context) používá k řízení životnosti operací, přenosu signálů zrušení a přenosu hodnot mezi gorutinami a funkcemi.

Hlavní úkoly kontextu:

  • Zrušení operací: umožňuje zrušit dlouhé nebo blokující operace, například při časovém limitu nebo zrušení požadavku.
  • Přenášení lhůt: lze nastavit čas, po kterém má být operace automaticky přerušena.
  • Přenášení hodnot: umožňuje přenášet data související s požadavkem nebo operací, například identifikátory uživatelů, tokeny atd.

Příklad použití:

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

// Předáváme ctx funkci, která provádí dlouhou operaci
result, err := LongOperation(ctx)
if err == context.DeadlineExceeded {
    fmt.Println("Operace byla přerušena kvůli časovému limitu")
}

Kontekst pomáhá psát lépe spravovatelný a citlivý kód, zejména v síťových a konkurenčních aplikacích.