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 翻译
子站问答
访问
宣传栏