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.Exite panicsã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 errorvez disso, deverá retornar um ) e quase nunca precisará os.Exitfora 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 IRLpanicpara situações muito especiais.