В каком месте нужно делать defer resp.Body.Close()?

Ставьте defer resp.Body.Close() сразу после проверки, что HTTP-запрос завершился без ошибки и ответ получен. До проверки err обращаться к resp.Body опасно.

Короткий ответ

Что ответить на собеседовании

Ставьте defer resp.Body.Close() сразу после проверки, что HTTP-запрос завершился без ошибки и ответ получен. До проверки err обращаться к resp.Body опасно.

Подробный разбор

Ответ с пояснениями

Ставьте defer resp.Body.Close() сразу после проверки, что HTTP-запрос завершился без ошибки и ответ получен. До проверки err обращаться к resp.Body опасно.

В цикле отложенное закрытие произойдёт только при выходе из окружающей функции, поэтому обработку одного ответа лучше вынести в отдельную функцию либо закрывать явно. Тело следует читать с разумным лимитом; для повторного использования соединения учитывайте завершение чтения и закрытие.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее