Go 語(yǔ)言函數(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
更多建議: