Sobes.tech
Junior — Middle

Kas nutiks, jei bandysite uždaryti jau uždarytą kanalą?

sobes.tech AI

Atsakymas iš AI

Go kalboje bandymas uždaryti jau uždarytą kanalą programos vykdymo metu sukels panic. Tai yra todėl, kad close() funkcija skirta uždaryti kanalą tik vieną kartą, ir pakartotinai uždaryti laikoma klaida.

Pavyzdys:

ch := make(chan int)
close(ch)      // teisingas uždarymas
close(ch)      // sukels panic: close of closed channel

Norint išvengti panikos, reikia užtikrinti, kad kanalas būtų uždaromas tik vieną kartą, pavyzdžiui, naudojant papildinę logiką ar sinchronizaciją.