Работа с сетями
Закрытие тела HTTP-ответа освобождает соединение и возвращает его в пул. Без этого соединения будут утекать, и программа начнёт зависать или падать.
Go использует пул соединений внутри http.Transport. Когда вы выполняете запрос через http.Get() или http.Do(), тело ответа (resp.Body) остаётся открытым. Если его не закрыть вызовом resp.Body.Close(), соединение остаётся занятым и не может быть повторно использовано.
Это приводит к:
утечкам ресурсов;
исчерпанию соединений;
деградации производительности.
Закрывать тело нужно всегда, даже если вы не читаете его полностью. Обычно делают это с помощью defer сразу после получения resp.
resp, err := http.Get("https://example.com")
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
// далее обработка телаУровень
Рейтинг:
5
Сложность:
3
Навыки
Golang
Networks
Ключевые слова
Подпишись на Golang Developer в телеграм