我希望能够获得 go 程序使用的每个包的校验和,包括模块中使用的包。
runtime/debug
在标准库中 has ReadBuildInfo()
,这很棒,但它只为模块提供数据,而不是为包提供数据。
例子:
package pkgA
var Foo = 1
package pkgB
import "pkgA"
var Bar = pkgA.Foo
package main
import (
"fmt"
"runtime/debug"
"example/pkgB"
)
func main() {
_ = pkgB.Bar
b, ok := debug.ReadBuildInfo()
if !ok {
fmt.Println("not ok!")
return
}
for _, module := range b.Deps {
fmt.Println(module.Path, module.Sum)
}
}
输出就像
pkgB v0.0.0-20210225235400-92e28d816f64
没有关于 A 的信息。我相信这是因为pkgB
两者pkgA
都属于同一个模块。
问题:有什么方法可以访问校验和pkgA
吗?