Sobes.tech
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.