Ваш код делает именно то, что ожидается:
func main() {
defer applicationExit()
}
В переводе на английский этот код означает:
- Подождите, пока не выйдет
main
, затем позвоните applicationExit()
.
Вот что происходит.Но вместо этого вы, похоже, хотите:
- Немедленно выполнить
applicationExit()
и сохранить возвращаемое значение для дальнейшего использования. - Подождите, пока приложение не закроется, затем вызовитеанонимная функция, возвращаемая
applicationExit()
.
Если мы напишем этот фактический код, мы получим что-то вроде:
func main() {
cleanup := applicationExit() // Call applicationExit() immediately
defer cleanup() // Wait until main() exits, then call cleanup()
}
, которое может бытьсокращено до:
func main() {
defer applicationExit()()
}