Rumah >pembangunan bahagian belakang >Golang >Bilakah Tanda Kurung Kosong Diperlukan untuk Invokasi Fungsi dalam Penutupan Go?
Kurungan Invokasi Fungsi dalam Penutupan Go
Dalam Go, penutupan ialah fungsi tanpa nama yang boleh merujuk pembolehubah daripada skop lampirannya. Walau bagaimanapun, selepas badan penutupan, seseorang mungkin menghadapi penggunaan tanda kurung kosong "()". Penggunaan ini, yang sering dilihat dalam literal fungsi dan pernyataan tangguh, menimbulkan persoalan tentang tujuannya.
Litera Fungsi
Tersurat fungsi ialah fungsi tanpa nama yang diberikan kepada pembolehubah atau diluluskan sebagai argumen . Pertimbangkan contoh:
func(ch chan int) { ch <- ACK }
Di sini, kurungan kosong digunakan untuk memanggil fungsi dengan segera. Dengan menambahkan kurungan, kami memanggil fungsi tanpa nama dengan berkesan, menghantar ke saluran replyChan.
Tunda Penyata
Pernyataan tangguh melaksanakan fungsi di hujung sekeliling fungsi, selepas pernyataan pulangan. Dalam contoh berikut:
func f() (result int) { defer func() { result++ }()
Kurungan kosong diperlukan kerana pernyataan tangguh memerlukan panggilan fungsi sebagai hujahnya. Dengan menambah kurungan, kami menggunakan fungsi tanpa nama dan serta-merta menambah pembolehubah hasil.
Mengapa Fungsi Invocation Diperlukan?
Sebab untuk memerlukan invocation fungsi dalam penyata tangguh adalah untuk memastikan bahawa fungsi itu dilaksanakan pada penghujung fungsi sekeliling, tidak kira bagaimana pelaksanaan keluar dari fungsi (cth., kembali, panik). Dengan memanggil fungsi dengan segera, penutupan menangkap keadaan semasa pembolehubah yang dirujuknya, memastikan gelagat yang dimaksudkan apabila fungsi itu dilaksanakan kemudian.
Nota:
Semasa penggunaan kurungan kosong adalah perkara biasa selepas penutupan dalam penyata tangguh, ia tidak terhad kepada penutupan. Sebarang panggilan fungsi mesti disertakan dalam kurungan untuk menggunakan fungsi tersebut.
Atas ialah kandungan terperinci Bilakah Tanda Kurung Kosong Diperlukan untuk Invokasi Fungsi dalam Penutupan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!