Sobes.tech
Junior — Middle

É permitido obter informações de um canal com modo fechado ativado?

sobes.tech IA

Resposta da IA

Em Go, se um canal estiver fechado, ainda é possível receber dados dele até que o buffer do canal se esvazie. Após ler todos os dados, operações de leitura adicionais de um canal fechado retornam um valor nulo do tipo do canal e uma flag indicando que o canal está fechado.

Ou seja, é permitido receber informações de um canal fechado, mas é necessário verificar o segundo valor retornado para entender se ainda há dados ou se o canal está completamente vazio.

Exemplo:

data, ok := <-ch
if !ok {
    // canal fechado e vazio
}

Tentar enviar dados para um canal fechado causará um pânico.