Go - 函数闭包
Go 编程语言支持匿名函数,这些函数可以充当函数闭包。当我们想内联定义一个函数而不向其传递任何名称时,会使用匿名函数。
在我们的示例中,我们创建了一个函数 getSequence(),该函数返回另一个函数。此函数的目的是在 upper 函数的变量 i 上平仓以形成闭包。例如 -
package main
import "fmt"
func getSequence() func() int {
i:=0
return func() int {
i+=1
return i
}
}
func main(){
/* nextNumber现在是一个i为0的函数 */
nextNumber := getSequence()
/* 调用nextNumber将i加1并返回相同的值 */
fmt.Println(nextNumber())
fmt.Println(nextNumber())
fmt.Println(nextNumber())
/* 创建一个新序列并查看结果,i再次为0 */
nextNumber1 := getSequence()
fmt.Println(nextNumber1())
fmt.Println(nextNumber1())
}
编译并执行上述代码时,它会产生以下结果——
1
2
3
1
2
2
3
1
2