Sobes.tech
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.