Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: resource leak, http, response body, connection pool

Зачем нужно закрывать тело HTTP-ответа в Go?

Работа с сетями

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

Закрытие тела 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()
// далее обработка тела
  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    3

Навыки

  • Golang

    Golang

  • Networks

Ключевые слова

#resource leak

#http

#response body

#connection pool

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.