Sobes.tech
Junior — Middle

Какво ще се случи, ако опитате да затворите канал, който вече е затворен?

sobes.tech AI

Отговор от AI

В Go опитът за затваряне на вече затворен канал ще доведе до паника (panic) по време на изпълнение на програмата. Това се дължи на факта, че функцията close() е предназначена да затваря канал само веднъж, и повторното затваряне се счита за грешка.

Пример:

ch := make(chan int)
close(ch)      // правилно затваряне
close(ch)      // ще предизвика panic: close of closed channel

За да избегнете паника, трябва да гарантирате, че каналът се затваря само веднъж, например чрез допълнителна логика или синхронизация.