Sobes.tech
Middle+

Quem deve fechar o canal?

sobes.tech IA

Resposta da IA

Quem criou o canal deve fechá-lo e não pretende mais enviar dados nele. Isso é importante para evitar pânico ao tentar enviar dados para um canal fechado e para que os destinatários possam determinar corretamente o fim do fluxo de dados.

Regras principais:

  • O remetente fecha o canal quando não enviará mais valores.
  • Os destinatários não devem fechar o canal.
  • O fechamento do canal sinaliza aos destinatários que não haverá mais dados.

Exemplo:

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

func consumidor(ch <-chan int) {
    for val := range ch {
        fmt.Println(val)
    }
    // Quando o canal está fechado, o ciclo termina
}

func main() {
    ch := make(chan int)
    go produtor(ch)
    consumidor(ch)
}