Перш за все, щоразу, коли у вас виникає запитання "як це застосовується на практиці", хорошим способом почати є пошук у вихідному коді Go (або в будь-якій достатньо великій базі коду Go), а також у пакувальних документах для відповідей.
Зараз os.Exitі panicзовсім інші. panicвикористовується, коли програма або її частина перебуває у невиправному стані.
Коли panicйого викликають, зокрема неявно для помилок під час виконання, таких як індексація зрізу поза межами або невдале твердження типу, він негайно зупиняє виконання поточної функції і починає розмотувати стек програми, запускаючи будь-які відкладені функції по дорозі. Якщо це розмотування досягає вершини стека програми, програма вмирає.
os.Exitвикористовується, коли вам потрібно негайно перервати програму , без можливості відновлення або запуску відкладеного оператора очищення, а також повернути код помилки (який інші програми можуть використовувати для повідомлення про те, що сталося). Це корисно в тестах, коли ви вже знаєте, що після того, як цей тест не вдасться, інший теж не зможе, тому ви можете просто вийти зараз. Це також можна використовувати, коли ваша програма зробила все, що їй потрібно було зробити, а тепер просто потрібно вийти, тобто після друку довідкового повідомлення.
Більшу частину часу ви не будете використовувати panic(вам слід повернути errorзамість цього), і вам майже ніколи не знадобляться os.Exitдеякі випадки в тестах і для швидкого припинення програми.
panicвикористовується для виходу з помилки, виключно завдяки тому, що його легко зрозуміти, і виключає імпорт будь-яких інших пакетів. Це не означає, що це хороша або ідіоматична практика! . Це просто пристрій для економії місця, наприклад код. Резерв IRLpanicдля дуже особливих ситуацій.