1. ホーム
  2. go

[解決済み] Goにはラムダ式というものがあるのですか?

2023-01-19 07:52:22

質問

Goはラムダ式やそれに類するものをサポートしていますか?

ラムダ式を使用する他の言語(Ruby)からライブラリを移植したいのですが、可能でしょうか?

どのように解決すればよいですか?

はい。

以下はその例です。 を注意深くコピー&ペーストしてください。

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