标签:pkg 如何获取 src encoding intern 直接 文件的 file path 编译器
通过go list命令可以获取到一个包或文件的所有依赖。
go list -e -json {packagename or go file path}
查看golang的源码可以发现,通过"cmd/go/internal/load"的Packages函数可以获取到项目的依赖信息,但是,这里面有一个问题,internal包是收到保护的,是不允许进行引用的(编译器编译不过),此时,需要copy一份源码出来,将其转换为可以直接调用的package。
package main
import (
"encoding/json"
"fmt"
"github.com/golangaccount/cmd.go.internal/load"
)
func main() {
loadpkgs := load.Packages
for _, pkg := range loadpkgs([]string{`C:\project\src\cmd\cmd.go`}) {
// Show vendor-expanded paths in listing
pkg.TestImports = pkg.Vendored(pkg.TestImports)
pkg.XTestImports = pkg.Vendored(pkg.XTestImports)
bt, _ := json.Marshal(pkg.PackagePublic)
fmt.Println(string(bt))
}
}
标签:pkg 如何获取 src encoding intern 直接 文件的 file path 编译器
原文地址:https://www.cnblogs.com/zp900704/p/11822239.html