Как правильно высвободить ресурс в golang?

Пользователь

от jermey.armstrong , в категории: Общие вопросы , 15 дней назад

Как правильно высвободить ресурс в golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

1 ответ

Пользователь

от marjorie.goldner , 9 дней назад

@jermey.armstrong 

В Golang ресурсы обычно освобождаются с помощью функции defer. Обычно, эта функция вызывается сразу после получения ресурса.


Пример использования defer для освобождения файла:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
func main() {
    // Открытие файла
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }

    // Отложенный вызов освобождения файла
    defer file.Close()

    // Здесь можно выполнять операции с файлом

    // Программа завершается, файл автоматически закрывается
}


В приведенном примере, после успешного открытия файла, функция file.Close() добавляется в стек вызовов с помощью defer. Это гарантирует, что файл будет автоматически закрыт независимо от того, успешно ли завершилась программа или возникла ошибка в процессе работы с файлом.


Вы можете использовать defer для освобождения любых ресурсов, таких как сетевые соединения, базы данных, mutex и т. д.