Sobes.tech
Junior — Middle

Com que frequência é necessário fechar um canal em Go para evitar erros?

sobes.tech IA

Resposta da IA

No Go, é necessário fechar um canal exatamente uma vez, quando não se pretende enviar mais dados para ele. Fechar o canal várias vezes levará a um pânico (runtime panic).

Importante:

  • Quem escreve no canal deve fechá-lo, não quem lê.
  • Se o canal é usado para transferência de dados entre goroutines, o fechamento indica que não haverá mais dados.

Exemplo:

ch := make(chan int)
func() {
    defer close(ch) // fecha o canal uma vez
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val)
}

Neste exemplo, o canal é fechado uma vez após o envio de todos os valores.