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.