Go での戻り値またはパラメーターの型に基づいた関数の選択
Go では、戻り値またはパラメーターに基づいて関数をプログラムで選択することができます。種類。これは、関数のコレクションがあり、特定の条件を満たすものだけをフィルターで除外する必要がある場合に便利です。
Go 標準ライブラリには、型の操作と検査を可能にするリフレクト パッケージが用意されています。タイプに基づいて関数を選択するには、次の手順を使用できます。
次の例は、int を a として受け取る関数を選択する方法を示しています。パラメータを使用するか、int を返します:
<code class="go">package main import ( "fmt" "reflect" ) func main() { funcs := make([]interface{}, 3, 3) // Using interface{} to allow any kind of function funcs[0] = func(a int) int { return a + 1 } // Good: takes int, returns int funcs[1] = func(a string) int { return len(a) } // Good: returns int funcs[2] = func(a string) string { return ":(" } // Bad: returns string for _, fi := range funcs { f := reflect.ValueOf(fi) functype := f.Type() good := false for i := 0; i < functype.NumIn(); i++ { if functype.In(i).String() == "int" { good = true // Yes, there is an int input break } } for i := 0; i < functype.NumOut(); i++ { if functype.Out(i).String() == "int" { good = true // Yes, there is an int output break } } if good { fmt.Println(f) } } }</code>
このコードは、関数の型を検査し、必要な条件を満たす関数をフィルターで除外するための Reflect の使用法を示しています。 int を入力として受け取る関数、または int を出力として返す関数を選択する方法を示します。
以上がReflect パッケージを使用して、戻り値またはパラメーターの型に基づいて Go で関数をプログラム的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。