Junior — Middle
É permitido enviar dados para um canal que não está aberto para leitura e escrita?
sobes.tech IA
Resposta da IA
Em Go, não é possível enviar dados para um canal que não esteja aberto para escrita. Se o canal estiver fechado (o fechamento é feito com close(channel)), a tentativa de enviá-lo causará um pânico (panic em tempo de execução).
No entanto, é possível ler de um canal fechado: a leitura retornará o valor zero do tipo do canal e uma bandeira indicando que o canal está fechado.
Exemplo:
ch := make(chan int)
close(ch)
// Ler de um canal fechado é seguro
value, ok := <-ch // ok == false
// Enviar para um canal fechado causará um pânico
ch <- 1 // panic: send on closed channel
Portanto, é possível enviar dados apenas para canais abertos.