Rumah > pembangunan bahagian belakang > Golang > Go Named Returns vs. Normal Returns: Mengapa Pengendalian Panik Berbeza?

Go Named Returns vs. Normal Returns: Mengapa Pengendalian Panik Berbeza?

Susan Sarandon
Lepaskan: 2024-12-07 03:31:10
asal
771 orang telah melayarinya

Go Named Returns vs. Normal Returns: Why Does Panic Handling Differ?

Mengapa Pulangan Normal Menyembunyikan Panik, Manakala Pemulangan Dinamakan Memberikannya kepada Pemanggil

Dalam Go, parameter hasil dinamakan membenarkan menetapkan nilai tertentu untuk dikembalikan oleh fungsi. Walau bagaimanapun, tingkah laku ini berbeza daripada fungsi yang kembali tanpa parameter hasil dinamakan, yang boleh menimbulkan persoalan.

Pertimbangkan kod berikut, di mana NormalReturns dan NamedReturns ialah fungsi yang cuba mengembalikan ralat apabila panik:

func NormalReturns(n int) error {
    var err error
    defer catch(&err)
    panicIf42(n)
    return err
}

func NamedReturns(n int) (err error) {
    defer catch(&err)
    panicIf42(n)
    return
}
Salin selepas log masuk

Apabila panik ditimbulkan dalam panikIf42, NormalReturns mengembalikan sifar, walaupun seseorang menjangkakan ralat. Ini berlaku kerana fungsi tangkapan tertunda memberikan ralat selepas panik mengembalikan kawalan kepada pemanggil.

Sebaliknya, NamedReturns mengembalikan nilai ralat yang diubah suai kerana parameter hasil dinamakan membenarkan fungsi tertunda mengubah suainya. Apabila panik berlaku, fungsi tangkapan tertunda memberikan ralat, yang disimpan dan dikembalikan apabila fungsi tamat.

Spesifikasi untuk Penyata Pemulangan:

"Semua keputusan nilai dimulakan kepada nilai sifar untuk jenisnya apabila masuk ke fungsi ... Pernyataan 'kembali' yang menentukan keputusan menetapkan parameter hasil sebelum sebarang fungsi tertunda dilaksanakan."

Spesifikasi untuk Penyata Tangguh:

"Fungsi tertunda boleh mengakses dan mengubah suai parameter hasil sebelum ia dikembalikan."

Oleh itu, dalam NormalReturns, kerana tiada parameter hasil dinamakan, nilai pulangan dimulakan kepada sifar dan kekal sifar selepas panik. Dalam NamedReturns, fungsi tertunda mengubah suai parameter hasil ralat dan nilainya digunakan sebagai ralat yang dikembalikan.

Atas ialah kandungan terperinci Go Named Returns vs. Normal Returns: Mengapa Pengendalian Panik Berbeza?. 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