Memahami Penilaian Hujah Panggilan Tertunda
Dalam Go, pernyataan "tangguh" sering digunakan untuk memastikan tindakan khusus diambil pada akhir fungsi sekeliling. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa argumen yang dihantar kepada panggilan tertunda tidak dilaksanakan serta-merta.
Menurut Go Spec, "setiap kali pernyataan 'menunda' dilaksanakan, nilai fungsi dan parameter kepada panggilan dinilai seperti biasa dan disimpan semula tetapi fungsi sebenar tidak digunakan."
Untuk menghuraikan, fungsi yang akan ditangguhkan (yang "fungsi tertunda") dan parameter yang berkaitan dinilai serta-merta. Walau bagaimanapun, pelaksanaan sebenar fungsi tertunda ditangguhkan sehingga fungsi sekeliling selesai.
Contoh Penjelasan
Pertimbangkan kod Go berikut:
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") }
Dalam contoh ini:
Oleh itu, argumen panggilan fungsi tertunda ("baris tertunda" dalam kes ini) dinilai serta-merta apabila pernyataan tangguh dilaksanakan, menyediakan fungsi dan hujahnya untuk pelaksanaan kemudian .
Atas ialah kandungan terperinci Bagaimanakah Go Mengendalikan Penilaian Hujah Panggilan Fungsi Tertunda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!