我想要获取所有能够导出的函数的函数名.
比如
funs := reflect.AllFunction()
for _,fun := each funcs {
fmt.printf(reflect.value(fun).Type.Name)
}
我猜你应该没弄清楚编译期和运行期的区别。
你要找的函数是编译期的概念,反射是运行时的概念,它只能处理打包在二进制里地符号。
你大概也不希望只用了一个函数结果把所有函数都编译进二进制吧。(官方团队为了减小二进制体积创建了几乎永不关闭的issue,长期持续地改进标准库地依赖关系)
所以你需要的是go/token、go/types那些东西而不是reflect。如果想偷懒,可以参考cmd/doc。
#1