Menilai Argumen Fungsi Tertunda
Soalan: Petikan dalam The Tour of Go menyatakan bahawa "hujah panggilan tertunda dinilai serta-merta." Apakah maksud ini dan apakah yang sebenarnya dinilai?
Jawapan:
Dalam Go, tangguhkan penyataan menangguhkan pelaksanaan fungsi sehingga fungsi yang disertakan kembali. Walau bagaimanapun, penilaian hujah fungsi tertunda berlaku serta-merta.
Memecahkan Proses Penilaian:
Spesifikasi menyatakan bahawa bagi setiap pernyataan "tunda":
Panggilan fungsi sebenar tidak dilaksanakan sehingga fungsi sekeliling kembali.
Contoh:
Pertimbangkan perkara berikut kod:
func def(s string) func() { fmt.Println("tier up") fmt.Println(s) return func() { fmt.Println("clean up") } } func main() { defer def("defered line")() fmt.Println("main") }
Jujukan Penilaian:
Kesimpulan:
Apabila pernyataan penangguhan digunakan, parameter fungsi tertunda dinilai serta-merta. Proses ini memastikan bahawa fungsi mempunyai akses kepada nilai terkini pembolehubah apabila ia dilaksanakan. Walau bagaimanapun, pelaksanaan sebenar fungsi tertunda ditangguhkan sehingga fungsi sekeliling kembali.
Atas ialah kandungan terperinci Apakah yang Berlaku kepada Argumen Fungsi Tertunda dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!