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.