是否转到具有lambda表达式或任何类似?(Does Go have lambda expressi

2019-06-26 16:20发布

是否转到支持lambda表达式或任何类似?

我想从港口使用lambda表达式另一种语言(红宝石)的库。

Answer 1:

下面是一个例子 ,复制和粘贴小心:

package main

import fmt "fmt"

type Stringy func() string

func foo() string{
  return "Stringy function"
}

func takesAFunction(foo Stringy){
  fmt.Printf("takesAFunction: %v\n", foo())
}

func returnsAFunction()Stringy{
  return func()string{
    fmt.Printf("Inner stringy function\n");
    return "bar" // have to return a string to be stringy
  }
}

func main(){
  takesAFunction(foo);
  var f Stringy = returnsAFunction();
  f();
  var baz Stringy = func()string{
    return "anonymous stringy\n"
  };
  fmt.Printf(baz());
}


Answer 2:

Lambda表达式也被称为函数文本。 转到完全支持他们。

见语言规范: http://golang.org/ref/spec#Function_literals

看到代码的步行路程,举例和说明: http://golang.org/doc/codewalk/functions/



Answer 3:

在计算机编程, 匿名函数或lambda抽象 (功能文字)是未绑定到的标识符的函数定义,以及转到支持匿名的功能 ,其可以形成封闭。 当你要定义一个函数内联,而无需将其命名为匿名函数是有用的。

    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


Answer 4:

该golang似乎并没有使lambda表达式,但你可以用一个文字匿名函数,我写了一些例子,当我学习比较JS中相当于,我希望它能帮助!

无参数返回字符串:

func() string {
    return "some String Value"
}
//Js similar: () => 'some String Value'

用字符串指定参数和返回字符串

func(arg string) string {
    return "some String" + arg
}
//Js similar: (arg) => "some String Value" + arg

没有参数和返回(无效)

func() {
   fmt.Println("Some String Value")
} 
//Js similar: () => {console.log("Some String Value")}

用参数和没有回报(无效)

func(arg string) {
    fmt.Println("Some String " + arg)
}
//Js: (arg) => {console.log("Some String Value" + arg)}


Answer 5:

是的,但它是在其最全的形式,封锁和所有lambda表达式。 你没有得到的类型推断与然而功能的文字! 这是什么使得围棋很烂!



Answer 6:

是的,因为它是一个完全功能性的语言,但是不具有脂肪箭头(=>)或细箭头( - >)作为通常的拉姆达标志,并使用该关键字FUNC为了清楚和简单起见。



文章来源: Does Go have lambda expressions or anything similar?
标签: go lambda