Junior — Middle
À quel endroit du code faut-il fermer le canal?
sobes.tech IA
Réponse de l'IA
En Go, le canal doit être fermé à l'endroit où il est créé et où il n'est plus prévu d'envoyer des données. Habituellement, c'est l'expéditeur qui le fait pour signaler aux récepteurs qu'il n'y aura plus de données.
Important :
- Les récepteurs peuvent vérifier la fermeture du canal lors de la lecture.
- Seul l'expéditeur doit fermer le canal pour éviter les paniques.
Exemple :
ch := make(chan int)
func() {
defer close(ch) // fermer le canal après avoir envoyé toutes les données
for i := 0; i < 5; i++ {
ch <- i
}
}()
for val := range ch {
fmt.Println(val) // recevoir des données jusqu'à ce que le canal se ferme
}