Sobes.tech
Junior — Middle

Em que parte do código é necessário fechar o canal?

sobes.tech IA

Resposta da IA

Em Go, o canal deve ser fechado no local onde é criado e onde não se planeja enviar mais dados. Normalmente, isso é feito pelo remetente para sinalizar aos receptores que não haverá mais dados.

Importante:

  • Os receptores podem verificar o encerramento do canal ao ler.
  • Apenas o remetente deve fechar o canal para evitar pânicos.

Exemplo:

ch := make(chan int)
func() {
    defer close(ch) // fecha o canal após enviar todos os dados
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val) // recebe dados até o canal ser fechado
}