бред?
Есть ошибка err.Error(), которая передаётся через структуру в горутину. В горутине при её получении выполняется log.Fatalln(), который, по идее, должен вызывать os.Exit(). Но этого не происходит. Функция, из которой ошибка передавалась в горутину, продолжает выполняться и в итоге падает в panic().
То есть:
logsChan <- logsStruct{"fatal", err.Error()} - выполняется дальше, в итоге panic(), смерть().
logsChan <- logsStruct{"fatal", "text"} - прерывается с выводом text в терминал, как и было запланировано.
Код: https://play.golang.org/p/sO9cR8ucY1n
1) cниппет не полный 2) панис может срабатывать ранее, чем читатель что вызывает log.fatal был зашедулен
А вы проверьте, точно ли у вас срабатывает case с вашим "fatal", может до него не доходит
Обсуждают сегодня