Sobes.tech
Senior

A cosa serve il contesto? Come è stato usato nella pratica?

sobes.tech AI

Risposta dell'AI

In Go, context viene utilizzato per trasmettere segnali di cancellazione, limiti di tempo e altri valori tra goroutine, specialmente quando si lavora con richieste, timeout e cancellazioni di operazioni.

Applicazione pratica:

  • Annullare operazioni lunghe alla chiusura di una richiesta HTTP.
  • Trasmettere un limite di tempo affinché un’operazione non duri più del tempo stabilito.
  • Trasmettere metadati (ad esempio, identificativi di richieste) attraverso la catena di chiamate.

Esempio di utilizzo:

func handler(ctx context.Context) {
    select {
    case <-time.After(5 * time.Second):
        fmt.Println("Operazione completata")
    case <-ctx.Done():
        fmt.Println("Operazione cancellata")
    }
}

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

Qui, l’operazione verrà interrotta dopo 2 secondi, anche se è prevista durare 5.