> Для чего нужен метод Close в Go? (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: CloudRu
Стек: Go
> Пример ответа
Метод Close в Go используется для освобождения ресурсов, связанных с объектом (например, файлом, сетевым соединением, каналом или HTTP-ответом). Он реализует интерфейс io.Closer, который требует единственного метода Close() error. Основные сценарии применения:
- Закрытие файлов (
os.File.Close) - гарантирует сброс буферов на диск и освобождение дескриптора. - Закрытие сетевых соединений (
net.Conn.Close) - завершает TCP/UDP-соединение. - Закрытие каналов (
chan.Close) - сигнализирует получателям, что данных больше не будет (используется в паттернах сrange). - Закрытие HTTP-ответов (
resp.Body.Close) - предотвращает утечку памяти и соединений в пуле.
Правильное использование: вызывать Close через defer, чтобы гарантировать выполнение даже при панике или ошибке. Пример:
GOfile, err := os.Open("data.txt")if err != nil {log.Fatal(err)}defer file.Close() // освободит ресурс при выходе из функции
Игнорирование Close может привести к утечкам ресурсов (дескрипторов файлов, соединений) и нестабильной работе программы.
> Похожие задачи по Go
Как организовать таблицы и шардирование для хранения исторических данных
Какие оптимизации запросов с PostgreSQL вы делали
Может ли приложение работать в нескольких процессах?
Как избежать конкурентного доступа к флагу для управления состоянием в Go?
> Похожие задачи по backend
Как организовать таблицы и шардирование для хранения исторических данных
Какие оптимизации запросов с PostgreSQL вы делали
Может ли приложение работать в нескольких процессах?
Как избежать конкурентного доступа к флагу для управления состоянием в Go?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью