Latest web development tutorials

Go 語言函數閉包

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函數