Memahami Interaksi Penangguhan dan Nilai Pulangan Dinamakan
Dalam Go, pernyataan penangguhan berfungsi sebagai alat yang berkuasa untuk menangguhkan panggilan fungsi sehingga hanya sebelum fungsi melampirkan keluar. Keupayaan ini boleh dimanfaatkan untuk mengubah suai nilai pulangan yang dinamakan fungsi, seperti yang digambarkan dalam contoh Go Blog:
func c() (i int) { defer func() { i++ }() return 1 }
Dalam contoh ini, penyata tangguh menjadualkan fungsi yang menambah nilai pulangan yang dinamakan i selepas fungsi sekeliling c kembali. Timbul persoalan: bagaimanakah fungsi tertunda boleh mengubah nilai pulangan fungsi lampiran?
Jawapannya terletak pada pengendalian penyata pulangan oleh Go. Dalam fungsi dengan nilai pulangan bernama, pernyataan pulangan tanpa hujah eksplisit memperuntukkan nilai semasa pembolehubah yang dinamakan kepada nilai pulangan. Dalam kes fungsi c, penyata pulangan pulangan 1 adalah bersamaan dengan i = 1; return.
Sebelum pengenalan penyata tangguh, penyata pulangan secara berkesan memberikan nilai 1 kepada pembolehubah yang dinamakan i dan kemudian segera kembali daripada fungsi. Walau bagaimanapun, dengan penyataan penangguhan di tempat, fungsi tertunda dipanggil sebelum fungsi sekeliling kembali. Fungsi tertunda ini menambah i, dengan itu mengubah nilainya. Akibatnya, penyataan pulangan akhirnya mengembalikan nilai i yang diubah suai, iaitu 2.
Tingkah laku ini menunjukkan kuasa fungsi tertunda untuk bukan sahaja mengubah suai nilai pembolehubah selepas fungsi telah dikembalikan tetapi juga untuk mengubah namanya. kembalikan nilai fungsi yang disertakan.
Atas ialah kandungan terperinci Bagaimanakah Fungsi Tertunda Boleh Mengubah Suai Nilai Pulangan Dinamakan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!