Junior — Middle
Como funciona o mecanismo de leitura de dados de um canal fechado e o que acontece nesse momento?
sobes.tech IA
Resposta da IA
No Go, a leitura de um canal é uma operação que bloqueia a goroutine que a chama até que haja dados no canal ou até que o canal seja fechado.
Se o canal estiver fechado e não houver mais dados, a leitura retorna um valor nulo do tipo do canal e uma bandeira indicando que o canal está fechado. Isso permite determinar que não haverá mais dados.
Exemplo:
ch := make(chan int)
close(ch)
value, ok := <-ch
if !ok {
fmt.Println("Canal fechado, sem dados")
}
Assim, ao ler de um canal fechado, a goroutine não bloqueia, mas recebe um sinal de fechamento, permitindo encerrar corretamente o trabalho com o canal.