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语言函数 下一篇: Go语言作用域规则