Memahami Tugasan Pembolehubah Setempat dalam Pemulihan Panik dengan Go
Pemulihan panik dalam Go membolehkan anda mengendalikan ralat masa jalan dengan anggun, tetapi salah tanggapan biasa timbul apabila menggunakan pembolehubah tempatan dalam fungsi pemulihan.
Pemulihan Panik Nilai Pulangan Dinamakan
Apabila berurusan dengan nilai pulangan yang dinamakan, fungsi pemulihan mempunyai akses kepada pembolehubah ini sebelum ia dikembalikan. Ini membolehkan anda menetapkan nilai kepada mereka dalam fungsi tangguh:
<code class="go">func foo() (result int, err error) { defer func() { if e := recover(); e != nil { result = -1 err = errors.New(e.(string)) } }() bar() result = 100 err = nil return }</code>
Penugasan Pembolehubah Tempatan dalam Pemulihan Panik
Walau bagaimanapun, apabila menggunakan pembolehubah tempatan dengan nilai pulangan tidak dinamakan , tingkah laku ini berbeza. Pembolehubah tempatan dicipta pada timbunan dan dimulakan dengan nilai sifar apabila fungsi dimasukkan. Jika panik berlaku sebelum ia ditetapkan, ia akan mengekalkan nilai sifarnya.
<code class="go">func foo() (int, error) { var result int var err error defer func() { if e := recover(); e != nil { result = -1 err = errors.New(e.(string)) } }() bar() result = 100 err = nil return result, err }</code>
Dalam contoh ini, hasil dan ralat dimulakan kepada 0 dan sifar, masing-masing. Apabila panik berlaku sebelum sebarang tugasan dibuat, nilai sifar ini dikembalikan. Hasilnya, output akan menjadi:
result: 0
Perbezaan Utama
Nilai pulangan dinamakan dianggap sebagai pembolehubah dinamakan, membenarkan fungsi tangguh mengubah suainya secara langsung. Pembolehubah tempatan, sebaliknya, disimpan pada timbunan dan tidak boleh diakses kepada fungsi tangguh sehingga ia ditetapkan.
Kesimpulan
Apabila pulih daripada panik dengan pembolehubah tempatan, adalah penting untuk memahami bahawa pembolehubah tempatan tidak dimulakan sehingga ia ditetapkan. Oleh itu, jika panik berlaku sebelum tugasan, mereka akan mengekalkan nilai sifarnya dan menjejaskan nilai yang dikembalikan.
Atas ialah kandungan terperinci Bagaimanakah Pembolehubah Tempatan Berkelakuan dalam Pemulihan Panik dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!