Sobes.tech
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.