Go 語(yǔ)言函數(shù)閉包

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

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

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

package main

import "fmt"

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

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

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

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

1
2
3
1
2

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