Golang 应用闭包:将函数作为返回值
闭包在Golang中是通过函数内部对外部作用域变量的引用来实现的。在函数外部无法直接访问这些内部变量,因此可以将它们用作私有变量。
以下是一个简单的例子,展示了如何在Golang中创建一个闭包:
package main
import "fmt"
// 定义一个函数工厂,它返回一个新的函数,该函数会记录被调用的次数。
func counter() func() int {
var x int
// 内部函数形成闭包,它可以访问外部函数的变量x。
return func() int {
x++
return x
}
}
func main() {
// 创建一个计数器闭包。
count := counter()
// 调用闭包三次。
fmt.Println(count())
fmt.Println(count())
fmt.Println(count())
}
在这个例子中,counter
函数返回一个匿名函数,这个匿名函数在闭包中对 x
变量进行操作。每次调用返回的函数 count
,它的值都会增加1。虽然 x
是定义在 counter
函数的作用域内,但由于闭包的特性,它在 counter
函数外部依然可以被访问和修改。
评论已关闭