Go で関数呼び出しを引数として渡す
Go では、go や defer などのキーワードにはパラメーターとして関数呼び出しが必要です。このような使用法に指定された型はありませんが、さまざまなテクニックを活用して同様の結果を達成できます。
関数変数/値の使用
次のように定義できます。関数型の変数を指定し、それに関数を割り当てます。これにより、変数に格納されているかのように関数を呼び出すことができます。
<code class="go">func myFunc() { fmt.Println("hi") } func main() { var f func() f = myFunc f() // This calls myFunc }</code>
関数呼び出しをパラメータでラップする
引数を伴う関数呼び出しに対応するには、次のようにします。関数内で呼び出しをラップし、ラップされた関数を渡すことができます。
<code class="go">func launch(f func()) { fmt.Println("Before launch") go func() { defer fmt.Println("After completion") f() }() }</code>
次のように使用できます:
<code class="go">func main() { launch(func() { fmt.Println("Hello, playground") }) time.Sleep(time.Second) }</code>
パラメータ自動保存用のヘルパー関数
特定の関数タイプについては、パラメーターの自動保存を提供するヘルパー関数を作成できます。これらのヘルパー関数は、元の関数と同じシグネチャを持ち、パラメータのない関数を返します。
動的関数にリフレクションを使用する
リフレクションを使用すると、必要な関数を必要とせずに関数を動的に呼び出すことができます。マニュアルのコピー。ただし、他のメソッドよりも遅く、型安全性が低くなります。
メソッド値
レシーバー オブジェクトのコピーを保存するメソッド値は例外であり、自動的にパラメータの保存が可能です。メソッド値は、メソッドを直接呼び出さなくても使用できます。
Go には関数呼び出しの特定の型がありませんが、これらの技術は、引数や自動パラメーター保存など、関数呼び出しを引数として渡すさまざまな方法を提供します。
以上がGo で関数呼び出しを引数として渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。