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