runtime.Goexit()?runtime.Goexit() завершает текущую горутину. При этом все зарегистрированные defer-функции выполняются (в обратном порядке). Другие горутины не затрагиваются.
os.Exit(code) сразу завершает весь процесс - defer не выполняется, другие горутины обрываются. Goexit() - только текущая горутина, с нормальным выполнением defer.