Sobes.tech
Junior — Middle

Ce se întâmplă dacă încerci să închizi un canal care este deja închis?

sobes.tech AI

Răspuns de la AI

În Go, încercarea de a închide un canal deja închis va duce la o panică (panic) în timpul execuției programului. Acest lucru se datorează faptului că funcția close() este destinată să închidă un canal o singură dată, iar închiderea repetată este considerată o eroare.

Exemplu:

ch := make(chan int)
close(ch)      // închidere corectă
close(ch)      // va provoca panic: close of closed channel

Pentru a evita panic-ul, trebuie să garantăm că canalul este închis doar o dată, de exemplu, folosind logică suplimentară sau sincronizare.