Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah pengkompil Go mengendalikan fungsi bersarang?

Bagaimanakah pengkompil Go mengendalikan fungsi bersarang?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2024-02-05 21:39:13
ke hadapan
1281 orang telah melayarinya

Go 的编译器如何处理嵌套函数?

Kandungan soalan

Apabila menulis fungsi bersarang dalam go, bagaimana pengkompil mengendalikannya? Adakah ia menjadi fungsi lain dan diletakkan di luar kod, atau adakah ia dicipta semula apabila fungsi induk dipanggil?

Contohnya:

func funca() int {
    a := 0
    funcb := func(_a int) int {
        return _a
    }
    return funcb(a)
}
Salin selepas log masuk

Adakah fungsi ini disusun seperti berikut?

func FuncA() int {
    a := 0
    return _funcB(a)
}
func _funcB(_a int) int {
    return _a
}
Salin selepas log masuk

Atau adakah ia menyusun betul-betul seperti yang ditulis, bermakna ingatan baru diperuntukkan setiap kali definisi funca 时都会为 funcb dipanggil?


Jawapan betul


Fungsi bersarang disusun sekali.

Oleh kerana FuncB tidak menutup pembolehubah dalam skop sekeliling, FuncA tidak memperuntukkan memori timbunan.

Jika FuncB menutup sebarang pembolehubah dalam skop sekeliling, maka pembolehubah tersebut akan diperuntukkan pada timbunan. Fungsi itu sendiri disusun sekali.

Atas ialah kandungan terperinci Bagaimanakah pengkompil Go mengendalikan fungsi bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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