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