Sobes.tech
Junior — Middle

Peut-on envoyer des données à un canal ayant la valeur nil?

sobes.tech IA

Réponse de l'IA

En Go, il est impossible d’envoyer des données dans un canal s’il est nil. Tenter d’envoyer une valeur dans un canal nil bloquera la goroutine indéfiniment, car ce canal n’est pas initialisé et ne peut pas recevoir de données.

Exemple :

var ch chan int // ch == nil

go func() {
    ch <- 1 // se bloque indéfiniment
}()

// le programme sera bloqué

Pour éviter le blocage, il faut initialiser le canal avant de l’utiliser :

ch := make(chan int)
ch <- 1 // fonctionne correctement

Si le canal peut être nil, il faut vérifier sa valeur ou utiliser select avec default pour éviter le blocage.