ホームページ > バックエンド開発 > Golang > Go で関数を引数として渡すにはどうすればよいですか?

Go で関数を引数として渡すにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-04 12:12:26
オリジナル
272 人が閲覧しました

How Can I Pass Functions as Arguments in Go?

関数を引数として渡す: Golang のメタプログラミング アプローチ

ご存知のとおり、Golang 関数は第一級の値であり、動的言語で一般的なメタプログラミングのトリック。関数を引数として別の関数に渡すには、Golang の関数値に対する固有のサポートを利用するだけです。以下に例を示します。

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

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