Работа с HTTP
Если resp не nil и тело не закрыто, соединение утечёт. Это приведёт к блокировке HTTP-клиента и снижению производительности.
Даже при ошибке (err != nil) переменная resp может быть не nil — например, если сервер вернул статус 500. В этом случае тело ответа (resp.Body) существует и его нужно закрыть, чтобы освободить соединение.
Игнорирование этого приводит к:
утечкам TCP-соединений;
переполнению пула соединений;
блокировке последующих запросов.
Корректная обработка: закрыть resp.Body, если он не nil, даже при наличии ошибки.
resp, err := http.Get("[https://example.com](https://example.com)")
if err != nil {
if resp != nil {
resp.Body.Close()
}
return
}
defer resp.Body.Close()
// далее работа с respУровень
Рейтинг:
5
Сложность:
4
Навыки
Golang
Networks
Ключевые слова
Подпишись на Golang Developer в телеграм