Junior — Middle
É possível enviar dados para um canal com valor nil?
sobes.tech IA
Resposta da IA
No Go, não é possível enviar dados para um canal se este for nil. Tentar enviar um valor para um canal nil fará com que a goroutine fique bloqueada indefinidamente, pois esse canal não está inicializado e não pode aceitar dados.
Exemplo:
var ch chan int // ch == nil
go func() {
ch <- 1 // bloqueia para sempre
}()
// o programa ficará parado
Para evitar o bloqueio, deve-se inicializar o canal antes de usá-lo:
ch := make(chan int)
ch <- 1 // funciona corretamente
Se o canal puder ser nil, antes de enviar, verifique seu valor ou use select com default para evitar bloqueios.