首页 > 解决方案 > 有没有办法从 reflect.Func 中提取包路径?

问题描述

reflect.TypeOf用于函数时,结果对象为空PkgPath()。显示这一点的完整示例如下:

// file 1, package foo:
func New() *Foo {
  return nil
}

// file 2, package main, main func:
typ := reflect.TypeOf(foo.New)
fmt.Printf("typ.PkgPath() is '%s'\n", typ.PkgPath())

我是否理解正确,不需要从函数中获取 pkg 路径,也没有办法学习它,因为 reflect.Type 单独用于函数?如果没有 - 还有办法以某种方式提取它吗?

编辑 1:我要解决的问题是编写一个代码生成器,该生成器将创建一个代码,使用我传递给该代码生成器的函数来执行某些操作。代码生成器是一个在我的实用程序的主函数中调用的库,它应该以某种方式获取我在某些包中定义的函数并创建以某种方式使用这些函数的代码。

标签: goreflectiongo-reflect

解决方案


推荐阅读