Junior — Middle
Comment organiser l'interaction et le transfert de données via des canaux dans le système?
sobes.tech IA
Réponse de l'IA
En Go, l'interaction entre goroutines est souvent organisée via des canaux (channels), qui sont des pipelines typés pour la transmission de données.
Pour transmettre des données, on crée un canal avec make(chan Type). Les goroutines peuvent envoyer des données dans le canal en utilisant l'opérateur <-, et aussi recevoir des données du canal avec le même opérateur, ce qui assure la synchronisation.
Exemple :
package main
import (
"fmt"
"time"
)
func producteur(ch chan<- int) {
for i := 0; i < 5; i++ {
ch <- i // envoi de données
time.Sleep(time.Millisecond * 500)
}
close(ch) // fermons le canal pour signaler la fin
}
func consommateur(ch <-chan int) {
for val := range ch { // réception de données du canal
fmt.Println("Reçu :", val)
}
}
func main() {
ch := make(chan int)
go producteur(ch)
consommateur(ch)
}
Ainsi, les canaux permettent de transmettre des données entre goroutines de manière sûre et efficace, évitant les conditions de course et les blocages.