Ответ 1
Прежде всего, всякий раз, когда у вас есть вопрос "как он используется на практике", хороший способ начать - search исходный код Go ( или любой достаточно большой базовый код кода), и docs для ответов.
Теперь os.Exit
и panic
сильно отличаются. panic
используется, когда программа или ее часть достигли состояния, не подлежащего восстановлению.
Когда вызывается
panic
, включая неявно для ошибок во время выполнения, таких как индексирование среза за пределами границ или отказ от утверждения типа, он немедленно останавливает выполнение текущей функции и начинает разворачивать стек goroutine, запуская любой отложенные функции на этом пути. Если эта размотка достигает вершины стека goroutine, программа умирает.
os.Exit
используется, когда вам нужно немедленно прекратить выполнение программы, без возможности восстановления или выполнения отложенного оператора очистки, а также вернуть код ошибки (который другие программы могут использовать для сообщения о том, что произошло). Это полезно в тестах, когда вы уже знаете, что после этого один тест не удастся, другой тоже не удастся, поэтому вы можете просто выйти. Это также можно использовать, когда ваша программа сделала все, что нужно, и теперь просто нужно выйти, т.е. После печати справочного сообщения.
В большинстве случаев вы не будете использовать panic
(вместо этого вы должны вернуть error
), и вам почти никогда не нужно os.Exit
за пределами некоторых случаев в тестах и для быстрого завершения программы.