写go语言闭包
Go语言中的闭包是一个函数值,它可以引用其函数体之外的变量。这些变量的值被保留在闭包中,即使它们已经超出了其原始作用域。
下面是一个简单的闭包示例:
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}
func main() {
a := adder()
fmt.Println(a(1)) // 1
fmt.Println(a(2)) // 3
fmt.Println(a(3)) // 6
}
在这个示例中,adder 函数返回一个内部函数。这个内部函数可以访问 adder 函数中定义的 sum 变量,并将其累加到 x 上。每次调用内部函数时,它都会返回当前的累加和。
在 main 函数中,我们首先调用 adder 函数,将返回的函数值保存在 a 变量中。然后,我们连续调用 a 函数三次,并打印每次的结果。由于 sum 变量的值在闭包中被保留,所以每次调用 a 函数时,它都会返回当前的累加和。
原文地址: https://www.cveoy.top/t/topic/rvm 著作权归作者所有。请勿转载和采集!