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