Go 語言函數閉包

Go 函數Go 函數

Go 語言支持匿名函數,可作為閉包。匿名函數是一個"內聯"語句或運算式。匿名函數的優越性在於可以直接使用函數內的變數,不必申明。

以下實例中,我們創建了函數 getSequence() ,返回另外一個函數。該函數的目的是在閉包中遞增 i 變數,代碼如下:

實例

package main

import "fmt"

func getSequence() func() int {
   i:=0
   return func() int {
      i+=1
     return i  
   }
}

func main(){
   /* nextNumber 為一個函數,函數 i 為 0 */
   nextNumber := getSequence()  

   /* 調用 nextNumber 函數,i 變數自增 1 並返回 */
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
   
   /* 創建新的函數 nextNumber1,並查看結果 */
   nextNumber1 := getSequence()  
   fmt.Println(nextNumber1())
   fmt.Println(nextNumber1())
}

以上代碼執行結果為:

1
2
3
1
2

Go 函數Go 函數