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
さらに、関数の選択がランタイムのみの影響を受ける場合は、既知の値の場合、マップを利用できます:
m := map[string]func(int, int) int { "someFunction1": someFunction1, "someFunction2": someFunction2, } ... z := someOtherFunction(x, y, m[key])
以上が文字列名を使用して Go 関数を動的に呼び出す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。