Sobes.tech
Junior — Middle

Šta će se desiti ako pokušate da zatvorite kanal koji je već zatvoren?

sobes.tech АИ

Одговор од АИ

U jeziku Go, pokušaj zatvaranja već zatvorenog kanala tokom izvršavanja programa će dovesti do panike (panic). To je zbog toga što je funkcija close() namenjena za zatvaranje kanala samo jednom, a ponovnim zatvaranjem smatra se greška.

Primer:

ch := make(chan int)
close(ch)      // ispravno zatvaranje
close(ch)      // izazva panic: close of closed channel

Da biste izbegli paniku, morate osigurati da se kanal zatvara samo jednom, na primer, pomoću dodatne logike ili sinhronizacije.