Sobes.tech
Junior — Middle

Kokio elgesio tikimasi, jei bandysite uždaryti jau anksčiau uždarytą kanalą?

sobes.tech AI

Atsakymas iš AI

Go kalboje, bandymas uždaryti jau uždarytą kanalą sukelia paniką.

Kanalą galima uždaryti tik kartą, kad būtų signalizuota, jog daugiau reikšmių nebus siunčiama.

Jei pakartotinai iškviesite close(ch) tą patį kanalą, programa netikėtai baigsis su klaida.

Pavyzdys:

ch := make(chan int)
close(ch)       // teisinga
close(ch)       // panic: close of closed channel

Todėl svarbu kontroliuoti, kad kanalas būtų uždaromas tik vieną kartą.