ホームページ > バックエンド開発 > Golang > Go は明示的なラムダ構文を使用せずにラムダ式の機能をどのように実現しますか?

Go は明示的なラムダ構文を使用せずにラムダ式の機能をどのように実現しますか?

Susan Sarandon
リリース: 2024-12-17 19:34:11
オリジナル
997 人が閲覧しました

How Does Go Achieve Lambda Expression Functionality Without Explicit Lambda Syntax?

Go のラムダ式

他の多くのプログラミング言語とは異なり、Go の構文にはラムダ式がありません。ただし、同様の機能を実現する代替メカニズムが提供されます。

ラムダ式と同様の機能

Go の匿名関数は、ラムダ式の代替として機能します。匿名関数は特定の名前のない関数であり、通常はインライン式として使用されます。その構文は次のとおりです:

func(parameters) return_type {
    // function body
}
ログイン後にコピー

たとえば、文字列を返す匿名関数を定義するには:

func() string {
  return "Stringy function"
}
ログイン後にコピー

実際の使用法

Anonymous関数は変数に割り当てたり、引数として他の関数に渡すことができるため、コードの柔軟な再利用とカスタマイズが可能になります。次の Go コードを考えてみましょう:

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" // must return a string to be stringy
  }
}

func main() {
  takesAFunction(foo)
  f := returnsAFunction()
  f()
  baz := func() string {
    return "anonymous stringy\n"
  }
  fmt.Printf(baz())
}
ログイン後にコピー

この例では、文字列を返す匿名関数を定義し、それを変数 f に割り当てます。また、変数 baz に割り当てられる無名関数も作成します。 f と baz はどちらも名前付き関数と同様に呼び出すことができます。

以上がGo は明示的なラムダ構文を使用せずにラムダ式の機能をどのように実現しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート