Sobes.tech
Senior

Čo je to kontext (context) v Go a na čo slúži?

sobes.tech AI

Odpoveď od AI

V Go je context balíček a typ, ktorý sa používa na prenos signálov o zrušení, časových limitov a ďalších dôležitých údajov medzi goroutine-ami.

Hlavné funkcie context:

  • Umožňuje zrušiť operácie (napríklad požiadavky na databázu alebo HTTP) pri dosiahnutí časového limitu alebo pri zrušení používateľom.
  • Prenáša časové limity (deadlines) pre operácie.
  • Umožňuje prenášať hodnoty medzi funkciami (napríklad identifikátory požiadaviek).

Príklad použitia:

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

select {
case result := <-doWork(ctx):
    fmt.Println("Výsledok:", result)
case <-ctx.Done():
    fmt.Println("Operácia zrušená alebo vypršal časový limit")
}

Tu je ctx odovzdané funkcii doWork, ktorá môže prerušiť svoju prácu, ak je kontext zrušený alebo ak vyprší časový limit. To pomáha riadiť životnosť operácií a zdrojov v konkurenčných programoch.