ホームページ >バックエンド開発 >Golang >Go で文字列関数名を使用して関数を動的に呼び出すにはどうすればよいですか?

Go で文字列関数名を使用して関数を動的に呼び出すにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-05 17:05:12403ブラウズ

How Can I Use String Function Names to Call Functions Dynamically in Go?

Go で文字列関数名を持つ関数ポインターを使用する

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 サイトの他の関連記事を参照してください。

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