Serhioromano
@Serhioromano
Web Developer

Как высветить сообщение на завершении программы?

Допустим ест такой простой код.

func main() {
	fmt.Println("start")

	defer func() {
        	fmt.Println("stop")
	}()

	Run()

	fmt.Scanln()
}


Запукается он в контенере. Если произодет ошибка в Run то оба сообщения будут высвечены и старт и стоп, а есля я сотанавливаю контейнер, то сообщения стоп не будет.

Как сделать так что бы сотановка контенера коректно завершала программу? Ну или сообщение логировалось все равно.
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
Для этого вам нужно ловить сигналы
https://gobyexample.com/signals

При стопе контейнера, программе посылается SIGINT. Нужно его отловить и корректно закрыть программу.
defer используется не для этого, а чтобы гарантированно выполнить какой-то код при return из функции или панике.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы