Rumah > pembangunan bahagian belakang > Golang > Apakah yang Berlaku kepada Argumen Fungsi Tertunda dalam Go?

Apakah yang Berlaku kepada Argumen Fungsi Tertunda dalam Go?

DDD
Lepaskan: 2024-12-20 12:37:11
asal
633 orang telah melayarinya

What Happens to Deferred Function Arguments in Go?

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":

  • Nilai Fungsi: Fungsi yang akan ditangguhkan dinilai sebagai biasa.
  • Parameter: Parameter kepada fungsi tertunda juga dinilai serta-merta.

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")
}
Salin selepas log masuk

Jujukan Penilaian:

  1. def() Penilaian Argumen: Parameter "garis tertunda" dinilai serta-merta .
  2. def() Penilaian Fungsi: The def() fungsi dipanggil, mencetak "peringkat atas" dan "garis tertunda."
  3. Penilaian Fungsi Tertunda: Nilai pulangan def() dinilai, iaitu fungsi yang mencetak "pembersihan ."
  4. Pelaksanaan Fungsi Tertunda: Apabila main() kembali, fungsi tertunda ialah dilaksanakan, mencetak "bersihkan."

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan