Go是否支持lambda表達式或類似內容?我想從使用lambda表達式(Ruby)的另一種語言移植庫。
3 回答

哆啦的時光機
TA貢獻1779條經驗 獲得超6個贊
是的
在計算機編程中,匿名函數或lambda抽象(函數文字)是未綁定到標識符的函數定義,并且Go支持可以形成閉包的匿名函數。當您想要內聯定義函數而不必命名時,匿名函數很有用。
package main
import "fmt"
func intSeq() func() int {
i := 0
return func() int {
i += 1
return i
}
}
func main() {
nextInt := intSeq()
fmt.Println(nextInt())
fmt.Println(nextInt())
fmt.Println(nextInt())
newInts := intSeq()
fmt.Println(newInts())
}
函數intSeq返回另一個函數,我們在intSeq主體中匿名定義。該返回的函數關閉在變量i以形成閉合。
Output
$ go run closures.go
1
2
3
1
- 3 回答
- 0 關注
- 545 瀏覽
添加回答
舉報
0/150
提交
取消