Go では、文字列として提供された関数名から関数ポインターを取得できます。この機能は、文字列パラメーターに基づいて関数を動的に呼び出すなどのメタプログラミング シナリオで役立ちます。
一部の動的言語とは異なり、Go 関数はファーストクラスの値です。したがって、関数を引数として他の関数に直接渡すことができます。次の例を考えてみましょう:
package main import "fmt" func someFunction1(a, b int) int { return a + b } func someFunction2(a, b int) int { return a - b } func someOtherFunction(a, b int, f func(int, int) int) int { return f(a, b) } func main() { fmt.Println(someOtherFunction(111, 12, someFunction1)) fmt.Println(someOtherFunction(111, 12, someFunction2)) }
出力:
123 99
この例では、someOtherFunction は 2 つの整数引数と関数ポインター (f パラメーター) を受け取ります。次に、指定された引数を使用して、指定された関数を呼び出します。結果が出力されます。
関数の選択が実行時のみに既知の値に依存する場合は、マップを使用できます:
m := map[string]func(int, int) int{ "someFunction1": someFunction1, "someFunction2": someFunction2, } ... z := someOtherFunction(x, y, m[key])
以上がGo で文字列関数名を使用して関数を動的に呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。