Middle+
Quem deve fechar o canal - o escritor ou o leitor?
sobes.tech IA
Resposta da IA
No Go, o canal deve ser fechado pelo remetente (sender), não pelo receptor (receiver). Fechar o canal sinaliza que não serão enviados mais valores, e os leitores podem terminar a leitura corretamente ao detectar o canal fechado.
Se o leitor fechar o canal e o remetente continuar tentando enviar, isso causará um pânico (panic). Portanto, a responsabilidade de fechar o canal recai sobre quem o escreve.
Exemplo:
ch := make(chan int)
func() {
defer close(ch) // o remetente fecha o canal
for i := 0; i < 5; i++ {
ch <- i
}
}()
for val := range ch {
fmt.Println(val) // o leitor lê até o canal ser fechado
}