Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah pengkompil Go mengendalikan fungsi bersarang?
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) }
Adakah fungsi ini disusun seperti berikut?
func FuncA() int { a := 0 return _funcB(a) } func _funcB(_a int) int { return _a }
Atau adakah ia menyusun betul-betul seperti yang ditulis, bermakna ingatan baru diperuntukkan setiap kali definisi funca
时都会为 funcb
dipanggil?
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!