Bagaimanakah Pembolehubah Tempatan Berkelakuan dalam Pemulihan Panik dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-10-29 14:20:02
asal
647 orang telah melayarinya

How Do Local Variables Behave in Panic Recovery in Go?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!