Przede wszystkim, kiedy masz pytanie „jak to jest używane w praktyce”, dobrym sposobem na rozpoczęcie jest przeszukanie kodu źródłowego Go (lub dowolnej wystarczająco dużej bazy kodu Go, tak naprawdę) i dokumentacji pakietu w celu uzyskania odpowiedzi.
Teraz os.Exiti panicsą zupełnie inne. panicjest używany, gdy program lub jego część osiągnęły stan niemożliwy do odzyskania.
Gdy panicjest wywoływana, w tym niejawnie w przypadku błędów czasu wykonywania, takich jak indeksowanie wycinka poza granicami lub niepowodzenie potwierdzenia typu, natychmiast zatrzymuje wykonywanie bieżącej funkcji i rozpoczyna rozwijanie stosu goroutine, uruchamiając po drodze wszelkie odroczone funkcje. Jeśli to odwijanie osiągnie szczyt stosu gorutyny, program umiera.
os.Exitjest używany, gdy trzeba natychmiast przerwać program , bez możliwości przywrócenia lub wykonania odroczonej instrukcji czyszczenia, a także zwrócić kod błędu (który inne programy mogą wykorzystać do zgłoszenia tego, co się stało). Jest to przydatne w testach, gdy już wiesz, że po tym, jak jeden test się nie powiedzie, drugi również się nie powiedzie, więc równie dobrze możesz teraz po prostu zakończyć. Można tego również użyć, gdy program zrobił wszystko, co musiał, a teraz musi tylko zakończyć, tj. Po wydrukowaniu komunikatu pomocy.
W większości przypadków nie będziesz używać panic(powinieneś errorzamiast tego zwrócić ) i prawie nigdy nie potrzebujesz os.Exitpoza niektórymi przypadkami w testach i do szybkiego zakończenia programu.
panicjest używany do kończenia pracy w przypadku błędu, wyłącznie dlatego, że jest łatwy do zrozumienia i eliminuje importowanie jakichkolwiek innych pakietów. To nie znaczy, że jest dobry, lub idiomatyczne praktykę! . To tylko urządzenie oszczędzające miejsce, na przykład kod. IRL rezerwujepanicna bardzo szczególne sytuacje.