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語言作用域規則