Junior — Middle
Est-il permis d'envoyer des données dans un canal qui n'est pas ouvert à la lecture et à l'écriture?
sobes.tech IA
Réponse de l'IA
En Go, il est impossible d’envoyer des données dans un canal qui n’est pas ouvert à l’écriture. Si le canal est fermé (fermeture avec close(channel)), toute tentative d’envoi provoquera une panique (panic en temps d’exécution).
Cependant, il est possible de lire d’un canal fermé : la lecture renverra la valeur zéro du type du canal et un indicateur indiquant que le canal est fermé.
Exemple :
ch := make(chan int)
close(ch)
// La lecture d’un canal fermé est sûre
value, ok := <-ch // ok == false
// L’envoi dans un canal fermé provoquera une panique
ch <- 1 // panic: send on closed channel
Ainsi, il est possible d’envoyer des données uniquement dans des canaux ouverts.