Sobes.tech
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.