Pertama-tama, setiap kali Anda memiliki pertanyaan "bagaimana penggunaannya dalam praktik", cara yang baik untuk memulai adalah mencari kode sumber Go (atau basis kode Go yang cukup besar, sungguh), dan dokumen paket untuk jawabannya.
Sekarang, os.Exit
dan panic
sangat berbeda. panic
digunakan saat program, atau bagiannya, mencapai status tidak dapat dipulihkan.
Saat panic
dipanggil, termasuk secara implisit untuk error run-time seperti mengindeks slice di luar batas atau menggagalkan pernyataan tipe, ia segera menghentikan eksekusi fungsi saat ini dan mulai melepas tumpukan goroutine, menjalankan fungsi yang ditangguhkan di sepanjang jalan. Jika pelepasan itu mencapai puncak tumpukan goroutine, program akan mati.
os.Exit
digunakan saat Anda perlu membatalkan program segera, tanpa kemungkinan pemulihan atau menjalankan pernyataan pembersihan yang ditangguhkan, dan juga mengembalikan kode kesalahan (yang dapat digunakan program lain untuk melaporkan apa yang terjadi). Ini berguna dalam pengujian, ketika Anda sudah tahu bahwa setelah pengujian yang satu ini gagal, pengujian yang lain juga akan gagal, jadi Anda sebaiknya keluar sekarang. Ini juga dapat digunakan ketika program Anda telah melakukan semua yang perlu dilakukan, dan sekarang hanya perlu keluar, yaitu setelah mencetak pesan bantuan.
Sebagian besar waktu Anda tidak akan menggunakan panic
(Anda harus mengembalikan sebagai error
gantinya), dan Anda hampir tidak perlu di os.Exit
luar beberapa kasus dalam pengujian dan untuk penghentian program yang cepat.
panic
digunakan untuk keluar dari kesalahan, murni karena fakta bahwa itu mudah dimengerti, dan menghilangkan pengimporan paket lain. Ini tidak berarti itu bagus, atau latihan idiomatis! . Ini hanya perangkat penghemat ruang untuk kode contoh. IRL memesanpanic
untuk situasi yang sangat khusus.