Что если main завершится раньше горутин?

Junior
868 просмотров
AFK Offer AI

Если main завершится — программа умрёт, и все горутины будут убиты мгновенно. Defer-ы в этих горутинах не выполнятся, данные могут потеряться. Это не panic и не graceful shutdown — просто мгновенная смерть процесса. Поэтому нужна синхронизация: WaitGroup, каналы, select с done-каналом, signal.Notify для перехвата SIGTERM. Типичная ошибка: go doWork() в main без ожидания — программа завершается мгновенно, и doWork даже не начинает работать. Всегда думай: "кто будет ждать эту горутину?".

Следующий вопрос

Как работает go:embed?