Как работает механизм defer в Golang?

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

от shirley.vonrueden , в категории: Golang , год назад

Как работает механизм defer в Golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от francis_schuster , год назад

@shirley.vonrueden 

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


Пример использования defer:

1
2
3
4
func main() {
	defer fmt.Println("world")
	fmt.Println("hello")
}


Результат выполнения данного кода будет:

1
2
hello
world


Как видно из примера, функция fmt.Println("world") была отложена до завершения main() и была вызвана после вывода "hello".


defer может быть использован для выполнения утечек ресурсов, для закрытия файлов, закрытия соединений к базе данных, удаления временных файлов, и т.д. Он также может быть использован для обработки ошибок.