Sobes.tech
Junior — Middle

Kāds uzvedības gaidāms, ja mēģināsiet aizvērt kanālu, kas jau iepriekš bija slēgts?

sobes.tech AI

Atbilde no AI

Go valodā, mēģinājums aizvērt jau aizvērtu kanālu noved pie panikas.

Kanālu drīkst aizvērt tikai vienu reizi, lai signalizētu, ka vairs netiks sūtītas vērtības.

Ja atkārtoti izsauksiet close(ch) tam pašam kanālam, programma strauji pārtrauks ar kļūdu.

Piemērs:

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

Tāpēc ir svarīgi kontrolēt, ka kanāls tiek aizvērts tikai vienu reizi.