Junior — Middle
O que acontece se tentar fechar um canal que já está fechado?
sobes.tech IA
Resposta da IA
No Go, tentar fechar um canal que já está fechado resultará numa panic durante a execução do programa. Isto deve-se ao facto de a função close() estar destinada a fechar um canal apenas uma vez, e fechá-lo repetidamente é considerado um erro.
Exemplo:
ch := make(chan int)
close(ch) // fecho correto
close(ch) // causará panic: close of closed channel
Para evitar o panic, deve garantir-se que o canal seja fechado apenas uma vez, por exemplo, usando lógica adicional ou sincronização.