Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Penyata `tunda` dan Nilai Pulangan Dinamakan Berinteraksi dalam Go?

Bagaimanakah Penyata `tunda` dan Nilai Pulangan Dinamakan Berinteraksi dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-12-01 18:23:09
asal
867 orang telah melayarinya

How Do `defer` Statements and Named Return Values Interact in Go?

Memahami Nilai Pemulangan Tangguh dan Dinamakan dalam Go

Dalam Go, penyataan penangguhan membenarkan fungsi melaksanakan kod selepas fungsi sekeliling kembali. Tingkah laku ini boleh digunakan untuk mengubah suai nilai pulangan yang dinamakan bagi fungsi sekeliling.

Pertimbangkan contoh berikut:

func c() (i int) {
    defer func() { i++ }()
    return 1
}
Salin selepas log masuk

Fungsi ini mengembalikan 2, walaupun pernyataan pulangan 1 digunakan. Ini kerana penyataan penangguhan menolak panggilan fungsi ke tindanan, yang dilaksanakan serta-merta sebelum fungsi sekeliling kembali. Oleh itu, penyataan i dilaksanakan selepas penyataan pulangan 1, menambah nilai i kepada 2.

Memahami Pulangan Telanjang

Adalah penting untuk menjelaskan bahawa "telanjang return" dalam Go merujuk kepada pernyataan pulangan tanpa sebarang hujah. Dalam kes sedemikian, nilai pulangan yang dinamakan dikembalikan tanpa diberikan secara eksplisit.

func a() (i int) {
    i = 2
    return
}
Salin selepas log masuk

Fungsi ini mengembalikan 2, kerana penyataan pulangan bogel mengembalikan nilai pulangan bernama i, yang telah ditetapkan sebelum ini kepada 2.

Menggabungkan Tangguh dan Pulangan Tidak Bogel

Dalam contoh fungsi c, pernyataan tangguh mengubah nilai pulangan yang dinamakan i selepas pernyataan pulangan 1 dilaksanakan. Ini secara berkesan bersamaan dengan kod berikut:

func c() (i int) {
    i = 1
    defer func() { i++ }()
}
Salin selepas log masuk

Dalam kes ini, penyata pulangan masih mengembalikan 1, tetapi penyataan tangguh menambah nilai i sebelum fungsi kembali.

Atas ialah kandungan terperinci Bagaimanakah Penyata `tunda` dan Nilai Pulangan Dinamakan Berinteraksi 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