Junior — Middle
Какво ще се случи, ако опитате да затворите канал, който вече е затворен?
sobes.tech AI
Отговор от AI
В Go опитът за затваряне на вече затворен канал ще доведе до паника (panic) по време на изпълнение на програмата. Това се дължи на факта, че функцията close() е предназначена да затваря канал само веднъж, и повторното затваряне се счита за грешка.
Пример:
ch := make(chan int)
close(ch) // правилно затваряне
close(ch) // ще предизвика panic: close of closed channel
За да избегнете паника, трябва да гарантирате, че каналът се затваря само веднъж, например чрез допълнителна логика или синхронизация.