Sobes.tech
Senior

Mit tud a Go-ban a kontextussal való munkáról? Milyen módszerei vannak?

sobes.tech MI

Válasz az MI-től

Go-ban a context csomag arra szolgál, hogy jeleket, időkorlátokat és más értékeket továbbítson a goroutine-ok között, különösen hálózati és aszinkron műveletek során.

Főbb módszerek és funkciók:

  • context.Background() — üres kontextust ad vissza, általában gyökérként használják.
  • context.TODO() — ideiglenes helykitöltő, amikor a kontextus még nincs meghatározva.
  • WithCancel(parent Context) — új kontextust és egy leállítási függvényt ad vissza, lehetővé téve a műveletek leállítását.
  • WithDeadline(parent Context, deadline time.Time) — határidős kontextust hoz létre.
  • WithTimeout(parent Context, timeout time.Duration) — időkorlátos kontextust hoz létre.
  • WithValue(parent Context, key, val interface{}) — értékkel ellátott kontextust hoz létre.

Használati példa:

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

select {
case <-time.After(3 * time.Second):
    fmt.Println("művelet befejeződött")
case <-ctx.Done():
    fmt.Println("művelet megszakadt vagy időtúllépés")
}

A kontextus segít az műveletek életciklusának kontrollálásában és paraméterek átadásában globális változók nélkül.