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