Junior — Middle
Jaké chování se očekává, pokud se pokusíte zavřít kanál, který již byl dříve uzavřen?
sobes.tech AI
Odpověď od AI
V Go, pokus o uzavření již uzavřeného kanálu vede k panice.
Kanál lze uzavřít pouze jednou, aby bylo signalizováno, že již nebudou odesílány žádné hodnoty.
Pokud voláte close(ch) opakovaně pro tentýž kanál, program se neočekávaně ukončí s chybou.
Příklad:
ch := make(chan int)
close(ch) // správně
close(ch) // panic: close of closed channel
Proto je důležité kontrolovat, že kanál je uzavřen pouze jednou.