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.Exitdan panicsangat berbeda. panicdigunakan saat program, atau bagiannya, mencapai status tidak dapat dipulihkan.
Saat panicdipanggil, 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.Exitdigunakan 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 errorgantinya), dan Anda hampir tidak perlu di os.Exitluar beberapa kasus dalam pengujian dan untuk penghentian program yang cepat.
panicdigunakan 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 memesanpanicuntuk situasi yang sangat khusus.