Go - 函数闭包
Go 编程语言支持匿名函数,可以充当函数闭包。当我们想要内联定义一个函数而不向其传递任何名称时,可以使用匿名函数。
在我们的示例中,我们创建了一个函数 getSequence(),它返回另一个函数。该函数的目的是关闭上层函数的变量 i 以形成闭包。例如 -
package main import "fmt" func getSequence() func() int { i:=0 return func() int { i+=1 return i } } func main(){ /* nextNumber is now a function with i as 0 */ nextNumber := getSequence() /* invoke nextNumber to increase i by 1 and return the same */ fmt.Println(nextNumber()) fmt.Println(nextNumber()) fmt.Println(nextNumber()) /* create a new sequence and see the result, i is 0 again*/ nextNumber1 := getSequence() fmt.Println(nextNumber1()) fmt.Println(nextNumber1()) }
当上面的代码被编译并执行时,它会产生以下结果 -
1 2 3 1 2
go_functions.htm