Go 語言函數(shù)閉包

Go 函數(shù)Go 函數(shù)

Go 語言支持匿名函數(shù),可作為閉包。匿名函數(shù)是一個"內聯(lián)"語句或表達式。匿名函數(shù)的優(yōu)越性在于可以直接使用函數(shù)內的變量,不必申明。

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

package main

import "fmt"

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

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

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

以上代碼執(zhí)行結果為:

1
2
3
1
2

Go 函數(shù)Go 函數(shù)