Skip to content

Goのloaderメモ

This content is a draft and will not be included in production builds.

loader.Config.Importはテストを読まない

Section titled “loader.Config.Importはテストを読まない”

*_test.gopackage x_test を対象に含めたい場合は ImportWithTests が必要。

例えば

var c loader.Config
c.Import("math/rand/v2")

この場合、PackageInfo.Importedmath/rand/v2 だけを持つが、go/parserでパースしたファイル自身のパッケージパスは取れない

math/rand/v2 が参照するパッケージを知りたい場合は、 PackageInfo.Pkg.Imports を調べるといい。

pkgs := c.Package("math/rand/v2").Imports()
fmt.Println(pkgs[0].Name()) // Output: rand
fmt.Println(pkgs[0].Path()) // Output: math/rand/v2

消すので、 //go:linkname などのディレクティブも消してしまう。残したい場合はCommentsオプションを与える。

雑多

case *ast.SelectorExpr: // X.Sel
case *ast.CompositeLit: // Type{}
case *ast.ParenExpr: // (X)
case *ast.UnaryExpr: // &X
case *ast.IndexExpr: // X[Index]
case *ast.StarExpr: // *X
case *ast.CallExpr: // Fun()