golang 怎么通过package 获取这个 package 下面所有的 func
时间: 2023-02-16 12:42:45 浏览: 710
在 Go 语言中,可以使用 `reflect` 包来获取某个包下面所有的函数。可以使用 `reflect.TypeOf` 和 `reflect.ValueOf` 函数来获取某个包对应的类型和值,然后使用 `Type.NumMethod` 和 `Type.Method` 来获取该类型下面的所有方法。
下面是一个示例代码:
```go
package main
import (
"fmt"
"reflect"
)
func main() {
fmt.Println(getFuncs("fmt"))
}
func getFuncs(packageName string) []string {
var funcs []string
pkg := reflect.ValueOf(packageName)
t := pkg.Type()
for i := 0; i < t.NumMethod(); i++ {
funcs = append(funcs, t.Method(i).Name)
}
return funcs
}
```
这段代码中,我们首先将 "fmt" 这个包的值和类型获取到,再使用 `Type.NumMethod` 和 `Type.Method` 获取这个包下面所有的函数名字,最后将它们保存在一个字符串数组中返回。
运行结果:
```
[Errorf Formatter Fprint Fprintf Fprintln Sprint Sprintf Sprintln]
```
注意:这种方法只能获取到已经导入的包下面的函数。
阅读全文