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
广告