Penutupan ialah fungsi yang ditakrifkan dalam fungsi bersarang yang boleh mengakses pembolehubah dalam skop fungsi bersarang, termasuk pembolehubah selepas nilai pulangan dikembalikan. Ia digunakan untuk mencipta kod yang fleksibel dan boleh digunakan semula, seperti menjana istilah bagi jujukan Fibonacci: Tentukan fungsi penutupan yang menjana istilah Fibonacci. Fungsi penutupan menangkap dua pembolehubah untuk menyimpan dua sebutan pertama jujukan Fibonacci. Panggil fungsi penutupan untuk mengira dan mengembalikan istilah Fibonacci baharu secara bergilir-gilir. Fungsi penutupan boleh mengubah nilai pembolehubah yang ditangkap dari semasa ke semasa, dengan itu menjana istilah seterusnya dalam jujukan Fibonacci.
Penutupan dalam fungsi bahasa Go
Apakah penutupan itu?
Penutupan ialah fungsi yang ditakrifkan di dalam fungsi bersarang. Ia boleh mengakses pembolehubah dalam skop fungsi bersarang, walaupun jika fungsi bersarang telah kembali.
Contoh Kod:
func outer(multiplier int) func(x int) int { return func(x int) int { return multiplier * x } } func main() { doubler := outer(2) result := doubler(5) fmt.Println(result) // 输出:10 }
Dalam contoh di atas, fungsiouter
返回了一个嵌套函数func(x int) int
。嵌套函数可以访问outer
函数中的变量multiplier
,即使outer
telah kembali.
Contoh Praktikal:
Penutupan boleh digunakan untuk mencipta kod yang fleksibel dan boleh digunakan semula. Sebagai contoh, kita boleh menulis penutupan untuk menjana istilah jujukan Fibonacci:
func fibonacci() func() int { a, b := 0, 1 return func() int { a, b = b, a+b return a } } func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) // 打印斐波那契序列的前 10 项 } }
Mata lain:
Atas ialah kandungan terperinci Penutupan fungsi golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!