> Для чего нужен метод Close в Go? (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: CloudRu

Стек: Go

> Пример ответа

Метод Close в Go используется для освобождения ресурсов, связанных с объектом (например, файлом, сетевым соединением, каналом или HTTP-ответом). Он реализует интерфейс io.Closer, который требует единственного метода Close() error. Основные сценарии применения:

  1. Закрытие файлов (os.File.Close) - гарантирует сброс буферов на диск и освобождение дескриптора.
  2. Закрытие сетевых соединений (net.Conn.Close) - завершает TCP/UDP-соединение.
  3. Закрытие каналов (chan.Close) - сигнализирует получателям, что данных больше не будет (используется в паттернах с range).
  4. Закрытие HTTP-ответов (resp.Body.Close) - предотвращает утечку памяти и соединений в пуле.

Правильное использование: вызывать Close через defer, чтобы гарантировать выполнение даже при панике или ошибке. Пример:

GO
file, err := os.Open("data.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close() // освободит ресурс при выходе из функции

Игнорирование Close может привести к утечкам ресурсов (дескрипторов файлов, соединений) и нестабильной работе программы.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью