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.