Задать вопрос
Serhioromano
@Serhioromano
Web Developer

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

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

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

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

	Run()

	fmt.Scanln()
}


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

Как сделать так что бы сотановка контенера коректно завершала программу? Ну или сообщение логировалось все равно.
  • Вопрос задан
  • 51 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • QA Studio
    Инженер по тестированию: с нуля до Junior+
    4 месяца
    Далее
  • Merion Academy
    DevOps-инженер с нуля
    4 месяца
    Далее
  • Учебный центр IBS
    JVA-075 Spring Advanced
    1 неделя
    Далее
Решения вопроса 1
Для этого вам нужно ловить сигналы
https://gobyexample.com/signals

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

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

Похожие вопросы