Sobes.tech
Senior

Na čo sa používa kontext? Ako ste ho použili v praxi?

sobes.tech AI

Odpoveď od AI

V jazyku Go sa context používa na prenos signálov o zrušení, časových limitov a ďalších hodnôt medzi gorutinami, najmä pri práci s požiadavkami, časovými limitmi a zrušením operácií.

Praktické použitie:

  • Zrušenie dlhých operácií pri zatváraní HTTP požiadavky.
  • Prenos časového limitu, aby operácia ne trvala dlhšie ako stanovený čas.
  • Prenos metadát (napríklad ID požiadaviek) cez reťazec volaní.

Príklad použitia:

func handler(ctx context.Context) {
    select {
    case <-time.After(5 * time.Second):
        fmt.Println("Operácia dokončená")
    case <-ctx.Done():
        fmt.Println("Operácia zrušená")
    }
}

func main() {
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    handler(ctx)
}

Operácia bude prerušená po 2 sekundách, aj keď je naplánovaná na 5.