ホームページ > バックエンド開発 > Golang > Go で関数名から関数ポインタを取得するにはどうすればよいですか?

Go で関数名から関数ポインタを取得するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-03 07:22:10
オリジナル
423 人が閲覧しました

How Can I Retrieve Function Pointers from Function Names in Go?

Go で関数名から関数ポインターを取得する

多くのプログラミング言語では、関数名の文字列表現から関数ポインターにアクセスできます。この機能は、実行する関数を動的に選択するなどのメタプログラミング手法に特に役立ちます。

Go のソリューション

他の言語とは異なり、Go は最初から関数ポインターをネイティブにサポートしています。 -class 値を使用すると、関数名から値を取得するための追加メカニズムが不要になります。代わりに、関数を引数として他の関数に直接渡すことができます。

たとえば、次のコードを考えてみます。

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))
}
ログイン後にコピー

このコードでは、someOtherFunction は関数ポインタを引数として受け入れ、呼び出します。指定された引数を持つ指定された関数。

動的関数のマップの使用選択

関数の選択が実行時情報に依存する場合、マップを使用して関数名を対応する関数ポインターに関連付けることができます。例:

m := map[string]func(int, int) int{
    "someFunction1": someFunction1,
    "someFunction2": someFunction2,
}

...

z := someOtherFunction(x, y, m[key])
ログイン後にコピー

これにより、指定されたキーに基づいて関数を動的に取得して実行できます。

以上がGo で関数名から関数ポインタを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート