Sobes.tech
Junior — Middle

Aké správanie sa očakáva, ak sa pokúsite zatvoriť kanál, ktorý bol už skôr zatvorený?

sobes.tech AI

Odpoveď od AI

V Go, pokus o zatvoreni uz uzatvoren kanal vedie k panike.

Kanal je možné zatvoriť iba raz, aby sa signalizovalo, že už nebudú odoslané žiadne hodnoty.

Ak zavoláte close(ch) opakovane pre ten istý kanál, program sa neočakávane ukončí s chybou.

Príklad:

ch := make(chan int)
close(ch)       // správne
close(ch)       // panic: close of closed channel

Preto je dôležité kontrolovať, že kanál je zatvorený iba raz.