在 Go 中根据返回或参数类型选择函数
在 Go 中,可以根据返回或参数以编程方式选择函数类型。当您有一组函数并且需要仅过滤掉满足特定条件的函数时,这会很有用。
Go 标准库提供了 Reflect 包,它允许您操作和检查类型。要根据类型选择函数,可以使用以下步骤:
这里是一个示例,演示如何选择以 int 作为参数的函数参数或返回一个 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 来检查函数类型并过滤出满足所需条件的函数。它演示了如何选择将整数作为输入或返回整数作为输出的函数。
以上是如何使用 Reflect 包根据返回或参数类型以编程方式选择 Go 中的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!