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.