Sobes.tech
Junior — Middle

Mi történik, ha megpróbálod bezárni egy már zárt csatornát?

sobes.tech MI

Válasz az MI-től

Go nyelven, egy már lezárt csatorna bezárására tett kísérlet a program futása közben pánikhoz (panic) vezet. Ez azért van, mert a close() függvény csak egyszeri csatornazárásra van tervezve, és az ismételt zárás hibának számít.

Példa:

ch := make(chan int)
close(ch)      // helyes zárás
close(ch)      // panic-et okoz: close of closed channel

A pánik elkerülése érdekében biztosítani kell, hogy a csatornát csak egyszer zárják be, például további logika vagy szinkronizáció segítségével.