Найди баг: for _, f := range files { defer f.Close() }

Middle
161 просмотров
AFK Offer AI

Все Close() выполнятся только при выходе из функции, не из итерации. Если 1000 файлов — все открыты одновременно до конца функции (file descriptor leak). Фикс: анонимная функция: for _, f := range files { func() { defer f.Close(); process(f) }() }. Или просто вызвать f.Close() без defer в конце итерации.

Следующий вопрос

Что такое log rotation в Go?