ホームページ >バックエンド開発 >Golang >Go は Java のように関数をパラメータとして渡すことができますか?またその方法は?

Go は Java のように関数をパラメータとして渡すことができますか?またその方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-09 09:47:06232ブラウズ

Can Go Pass Functions as Parameters Like Java, and How?

Go のパラメータとしての関数

Java では、実装に多少の複雑さが伴う場合でも、関数をパラメータとして渡すことができます。匿名の内部クラス。しかし、Go はこのプロセスを簡素化する同様のメカニズムを提供していますか?

Go の関数タイプ

はい、Go は関数タイプを使用してパラメーターとして関数を渡すことをサポートしています。関数の型は関数のシグネチャを定義し、そのパラメーターと戻り値の型を指定します。たとえば、整数の引数を受け取り、文字列を返す関数型変換を定義できます。

type convert func(int) string

関数型の実装

具体的な関数を実装できます。変換関数のタイプを満たすもの:

func value(x int) string {
    return fmt.Sprintf("%v", x)
}

受け渡し関数as Parameters

関数型を定義して実装すると、関数をパラメーターとして他の関数に渡すことができます。たとえば、次の関数 quote123 は、convert 型の関数を受け取り、それを数値 123 に適用します。

func quote123(fn convert) string {
    return fmt.Sprintf("%q", fn(123))
}

提供されたコード例では、次のようになります。 Convert 関数タイプを使用し、関数をパラメータとして渡す方法を示します。

  • 次の関数値を作成します。変換型を実装し、整数の文字列表現を返します。
  • 値と匿名関数の両方を指定して quote123 を呼び出し、123 を文字列に変換し、引用符で囲まれた結果を表示します。
  • また、次のように定義します。文字列「foo」を返し、それをパラメータとして quote123 に渡す関数 foo。
  • 最後に、foo の型を確認します。実行時に、convert(foo) を使用して変換型を満たします。

これは、Go の関数型の柔軟性と表現力を示し、構成可能で再利用可能なコードの作成を可能にします。

以上がGo は Java のように関数をパラメータとして渡すことができますか?またその方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。