首页 > 后端开发 > Golang > 正文

Go 中如何根据参数和返回类型从列表中选择函数?

DDD
发布: 2024-10-29 19:29:02
原创
906 人浏览过

How to Select Functions from a List Based on Parameter and Return Types in Go?

从 Go 中的列表中选择函数

在 Go 中,可以使用切片或数组创建函数列表。但是,根据特定标准(例如返回类型或参数类型)选择函数需要使用反射。

要确定函数是否接受整数参数或返回整数,我们可以使用 Reflect 包来检查它的类型签名。下面是一个示例代码,演示了如何实现此目的:

<code class="go">package main

import (
    "fmt"
    "reflect"
)

func main() {
    funcs := make([]interface{}, 3, 3) // Use interface{} for any function type
    funcs[0] = func(a int) int { return a + 1 } // Accepts an int, returns an int
    funcs[1] = func(a string) int { return len(a) } // Accepts a string, returns an int
    funcs[2] = func(a string) string { return ":(" } // Accepts a string, returns a string

    for _, fi := range funcs {
        f := reflect.ValueOf(fi)
        functype := f.Type()
        hasIntParam := false
        hasIntReturn := false

        // Check function parameters for int type
        for i := 0; i < functype.NumIn(); i++ {
            if "int" == functype.In(i).String() {
                hasIntParam = true
                break
            }
        }

        // Check function return value for int type
        for i := 0; i < functype.NumOut(); i++ {
            if "int" == functype.Out(i).String() {
                hasIntReturn = true
                break
            }
        }

        // Print the function if it has integer parameter or return type
        if hasIntParam || hasIntReturn {
            fmt.Println(f)
        }
    }
}</code>
登录后复制

通过使用反射,我们可以内省列表中的函数并有选择地打印满足指定条件的函数。代码是不言自明的,清楚地演示了如何在 Go 中处理这个问题。

以上是Go 中如何根据参数和返回类型从列表中选择函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板