为了账号安全,请及时绑定邮箱和手机立即绑定

Go是否具有lambda表达式或类似内容?

Go是否具有lambda表达式或类似内容?

Go
饮歌长啸 2021-05-14 18:21:33
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


查看完整回答
反对 回复 2021-05-17
  • 3 回答
  • 0 关注
  • 516 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信