当前位置: 首页 > 文档资料 > Go 语言中文教程 >

功能闭包(Function Closures)

优质
小牛编辑
112浏览
2023-12-01

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