3 回答

TA貢獻1775條經(jīng)驗 獲得超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包來提取所有已安裝的包?;蛘吣梢耘渲肔ookup導入器以檢查環(huán)境之外的二進制文件。
在 1.5 之前,唯一沒有黑客的方法是使用包ast來編譯源代碼。

TA貢獻1111條經(jīng)驗 獲得超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)
}
然后現(xiàn)在都工作了。:)
- 3 回答
- 0 關注
- 212 瀏覽
添加回答
舉報