Go 有 lambda 表达式或类似的东西吗?

新手上路,请多包涵

Go 是否支持 lambda 表达式或类似的东西?

我想从另一种使用 lambda 表达式的语言 (Ruby) 移植一个库。

原文由 loyalflow 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

是的。

这是一个示例,仔细复制并粘贴:

 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());
}

原文由 perreal 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏