Ставьте defer resp.Body.Close() сразу после проверки, что HTTP-запрос завершился без ошибки и ответ получен. До проверки err обращаться к resp.Body опасно.
В каком месте нужно делать defer resp.Body.Close()?
Ставьте defer resp.Body.Close() сразу после проверки, что HTTP-запрос завершился без ошибки и ответ получен. До проверки err обращаться к resp.Body опасно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Ставьте defer resp.Body.Close() сразу после проверки, что HTTP-запрос завершился без ошибки и ответ получен. До проверки err обращаться к resp.Body опасно.
В цикле отложенное закрытие произойдёт только при выходе из окружающей функции, поэтому обработку одного ответа лучше вынести в отдельную функцию либо закрывать явно. Тело следует читать с разумным лимитом; для повторного использования соединения учитывайте завершение чтения и закрытие.