Senior
La ce serve contextul? Cum a fost folosit în practică?
sobes.tech AI
Răspuns de la AI
În Go, context este utilizat pentru a transmite semnale de anulare, limite de timp și alte valori între goroutines, în special atunci când lucrați cu solicitări, timeout-uri și anulări de operații.
Aplicare practică:
- Anularea operațiilor lungi la închiderea unei solicitări HTTP.
- Transmiterea unui limit de timp pentru ca o operație să nu dureze mai mult decât timpul stabilit.
- Transmiterea metadatelor (de exemplu, identificatori de solicitări) prin lanțul de apeluri.
Exemplu de utilizare:
func handler(ctx context.Context) {
select {
case <-time.After(5 * time.Second):
fmt.Println("Operație finalizată")
case <-ctx.Done():
fmt.Println("Operație anulată")
}
}
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
handler(ctx)
}
Aici, operația va fi întreruptă după 2 secunde, chiar dacă este planificată pentru 5.