Senior
Que se passe-t-il lors de la lecture et de l'écriture dans un canal fermé?
sobes.tech IA
Réponse de l'IA
En Go, lors de la manipulation des canaux :
-
Lecture d’un canal fermé : Si le canal est fermé et qu’il n’y a pas de données, l’opération de lecture retourne la valeur zéro du type du canal et
falsedans la deuxième valeur de retour (si utilisée), ce qui indique que le canal est fermé. -
Écriture dans un canal fermé : Tenter d’écrire dans un canal fermé provoque une panique (
panic). C’est une erreur à l’exécution.
Exemple :
ch := make(chan int)
close(ch)
// Lecture
v, ok := <-ch // ok == false, v == 0
// Écriture
ch <- 1 // panic : send on closed channel
Ainsi, un canal fermé peut être lu en toute sécurité tant qu’il y a des données, mais il ne faut pas y écrire.