Sobes.tech
Junior — Middle

Co się stanie, jeśli spróbujesz zamknąć kanał, który jest już zamknięty?

sobes.tech AI

Odpowiedź od AI

W języku Go próba zamknięcia już zamkniętego kanału spowoduje panic podczas działania programu. Wynika to z faktu, że funkcja close() jest przeznaczona do zamknięcia kanału tylko raz, a wielokrotne zamykanie jest uważane za błąd.

Przykład:

ch := make(chan int)
close(ch)      // poprawne zamknięcie
close(ch)      // spowoduje panic: close of closed channel

Aby uniknąć panic, należy zapewnić, że kanał zostanie zamknięty tylko raz, na przykład za pomocą dodatkowej logiki lub synchronizacji.