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