Junior — Middle
Comment l'échange de données entre composants ou systèmes est-il effectué sans les bloquer ni attendre de réponse?
sobes.tech IA
Réponse de l'IA
L’échange de données sans blocage ni attente de réponse en Go est généralement réalisé à l’aide de canaux (channels) et de goroutines. Les canaux permettent de transmettre des données entre goroutines de manière asynchrone, et l’échange non bloquant est obtenu en utilisant des opérations non bloquantes sur les canaux, par exemple, via select avec une branche default.
Exemple d’envoi et de réception de données sans blocage via un canal :
ch := make(chan int)
// Envoi non bloquant
select {
case ch <- 42:
fmt.Println("Envoyé")
default:
fmt.Println("Canal occupé, envoi ignoré")
}
// Réception non bloquante
select {
case val := <-ch:
fmt.Println("Reçu", val)
default:
fmt.Println("Pas de données à recevoir")
}
Ainsi, les composants peuvent échanger des données sans attendre, ce qui améliore la performance et la réactivité du système.