Go では関数をパラメータとして渡すことができますか?
Java では、匿名の内部クラスを使用して関数をパラメータとして渡すことができます。 Go は、この機能を容易にする同様のメカニズムを提供していますか?
答え:
もちろんです! Go は、匿名関数とクロージャを介して関数をパラメータとして渡すことをサポートしています。以下にいくつかの例を示します。
例 1:
package main import "fmt" type convert func(int) string func value(x int) string { return fmt.Sprintf("%v", x) } func quote123(fn convert) string { return fmt.Sprintf("%q", fn(123)) } func main() { result := quote123(value) fmt.Println(result) // Output: "123" }
この例では、convert 関数の型は整数を受け取り文字列を返すように定義されています。 value 関数は、入力整数の文字列表現を返すことにより、convert を実装します。 quote123 関数は、convert 関数を引数として受け取り、値 123 で関数を呼び出した結果を引用符で囲まれた文字列表現で返します。
例 2:
package main import "fmt" func main() { result := quote123(func(x int) string { return fmt.Sprintf("%b", x) }) fmt.Println(result) // Output: "1111011" }
ここでは、匿名関数が引数として quote123 関数に渡されています。匿名関数は、入力整数をバイナリ文字列表現に変換します。
例 3:
package main import "fmt" func main() { foo := func(x int) string { return "foo" } result := quote123(foo) fmt.Println(result) // Output: "foo" }
この場合、名前付き関数 foo は次のように渡されます。 quote123 への引数。 foo 関数は、入力に対して文字列「foo」を返すだけです。
これらの例は、Go で関数をパラメータとして渡す柔軟性と機能を示し、汎用的で再利用可能なコードを作成できるようにします。
以上がGo 関数をパラメータとして渡すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。