3 回答
TA贡献1775条经验 获得超8个赞
在 Go 1.5 中,您可以使用新的包类型和导入器来检查二进制包和源包。例如:
package main
import (
"fmt"
"go/importer"
)
func main() {
pkg, err := importer.Default().Import("time")
if err != nil {
fmt.Printf("error: %s\n", err.Error())
return
}
for _, declName := range pkg.Scope().Names() {
fmt.Println(declName)
}
}
您可以使用go/build包来提取所有已安装的包。或者您可以配置Lookup导入器以检查环境之外的二进制文件。
在 1.5 之前,唯一没有黑客的方法是使用包ast来编译源代码。
TA贡献1111条经验 获得超0个赞
按照您的指示,它今天仍然可以在 1.13.6 上运行。
按照你的方式 tl.s 将是:
TEXT ·typelinks(SB), $0-0
JMP reflect·typelinks(SB)
是的,没有包名,也没有“添加”功能。
然后按照@icio的方式将“添加”功能更改为:
func add(p unsafe.Pointer, x uintptr, whySafe string) unsafe.Pointer {
return unsafe.Pointer(uintptr(p) + x)
}
然后现在都工作了。:)
- 3 回答
- 0 关注
- 182 浏览
添加回答
举报