Sobes.tech
Junior — Middle

Čo sa stane, ak sa pokúsite zatvoriť kanál, ktorý je už zatvorený?

sobes.tech AI

Odpoveď od AI

V jazyku Go spôsobí pokus o zatvorenie už zatvoreného kanála počas behu programu paniku (panic). Je to spôsobené tým, že funkcia close() je určená na zatvorenie kanála iba raz, a opakované zatváranie sa považuje za chybu.

Príklad:

ch := make(chan int)
close(ch)      // správne zatvorenie
close(ch)      // spôsobí panic: close of closed channel

Aby ste predišli panike, musíte zabezpečiť, že kanál bude zatvorený iba raz, napríklad pomocou dodatočej logiky alebo synchronizácie.