Senior
O que acontece ao ler de um canal fechado em Go?
sobes.tech IA
Resposta da IA
Ao ler de um canal fechado em Go, o seguinte acontece:
- Se houver dados no canal, eles serão lidos normalmente.
- Se o canal estiver fechado e não houver dados, a operação de leitura retornará o valor zero do tipo do canal e
falseno segundo valor retornado (se usar a forma com dois valores de retorno).
Exemplo:
ch := make(chan int)
close(ch)
v, ok := <-ch
fmt.Println(v, ok) // Vai imprimir: 0 false
Isso permite determinar que o canal está fechado e não haverá mais dados. Ao ler de um canal fechado sem dados, a goroutine não bloqueia e recebe imediatamente o valor zero.
Se ler de um canal fechado sem verificar o segundo valor, pode obter valores nulos, o que é importante considerar na lógica de processamento.