Em primeiro lugar, sempre que você tiver uma pergunta "como ele é usado na prática", uma boa maneira de começar é pesquisar o código-fonte Go (ou qualquer base de código Go grande o suficiente, na verdade) e a documentação do pacote para respostas.
Agora, os.Exit
e panic
são bastante diferentes. panic
é usado quando o programa, ou parte dele, atingiu um estado irrecuperável.
Quando panic
é chamado, incluindo implicitamente para erros de tempo de execução, como indexação de uma fatia fora dos limites ou falha em uma asserção de tipo, ele para imediatamente a execução da função atual e começa a desenrolar a pilha da goroutine, executando quaisquer funções adiadas ao longo do caminho. Se esse desenrolar atingir o topo da pilha da goroutine, o programa será encerrado.
os.Exit
é usado quando você precisa abortar o programa imediatamente, sem possibilidade de recuperação ou execução de uma instrução de limpeza adiada, e também retornar um código de erro (que outros programas podem usar para relatar o que aconteceu). Isso é útil em testes, quando você já sabe que depois que um teste falhar, o outro também falhará, então você pode simplesmente sair agora. Isso também pode ser usado quando o programa tiver feito tudo o que era necessário e agora precisar apenas sair, ou seja, após imprimir uma mensagem de ajuda.
Na maioria das vezes, você não usará panic
(em error
vez disso, deverá retornar um ) e quase nunca precisará os.Exit
fora de alguns casos em testes e para o encerramento rápido do programa.
panic
é usado para sair em caso de erro, puramente devido ao fato de ser fácil de entender, e elimina a importação de quaisquer outros pacotes. Isso não significa que seja uma prática boa ou idiomática! . É apenas um dispositivo de economia de espaço, por exemplo, código. Reserva IRLpanic
para situações muito especiais.