Senior
O que acontece ao ler e escrever num canal fechado?
sobes.tech IA
Resposta da IA
Em Go, ao trabalhar com canais:
-
Leitura de um canal fechado: Se o canal estiver fechado e não houver dados nele, a operação de leitura retorna o valor zero do tipo do canal e
falseno segundo valor retornado (se usado), o que indica que o canal está fechado. -
Escrita em um canal fechado: Tentar escrever em um canal fechado provoca um pânico (
panic). Isso é um erro em tempo de execução.
Exemplo:
ch := make(chan int)
close(ch)
// Leitura
v, ok := <-ch // ok == false, v == 0
// Escrita
ch <- 1 // panic: send on closed channel
Portanto, um canal fechado pode ser lido com segurança enquanto tiver dados, mas não se deve escrever nele.