英文:
What is {{.Target}} in "go list -f"
问题
这里显示的{{.Target}}
是什么:
>
英文:
What is {{.Target}}
shown in here:
>
答案1
得分: 4
{{.Target}}
是一个模板操作,它会展开为包的安装路径。
请参考 go help list
的输出:
-f 标志指定了列表的替代格式,使用包模板的语法。... 传递给模板的结构体是:
type Package struct { ... Target string // 安装路径
英文:
{{.Target}}
is a template action that expands to the package install path.
See the output of go help list
:
> The -f flag specifies an alternate format for the list, using the
syntax of package template. … The struct being passed to the template is:
>
> type Package struct {
> …
> Target string // install path
>
答案2
得分: 3
这在go list的文档中有解释,用于列出包或模块。
-f 标志指定列表的替代格式,使用包模板的语法。默认输出等同于 -f '{{.ImportPath}}'。传递给模板的结构体如下:
type Package struct {
Dir string // 包源代码所在的目录
ImportPath string // 包在目录中的导入路径
ImportComment string // 包声明中导入注释的路径
Name string // 包名
Doc string // 包文档字符串
Target string // 安装路径
Shlib string // 包含此包的共享库(仅在 -linkshared 时设置)
Goroot bool // 此包是否在 Go 根目录中?
Standard bool // 此包是否是标准 Go 库的一部分?
Stale bool // 对于此包,'go install' 是否会执行任何操作?
StaleReason string // Stale==true 的解释
Root string // 包含此包的 Go 根目录或 Go 路径目录
ConflictDir string // 此目录在 $GOPATH 中遮蔽了 Dir
BinaryOnly bool // 仅二进制包(不再支持)
ForTest string // 仅用于命名测试的包
Export string // 包含导出数据的文件(使用 -export 时)
BuildID string // 编译包的构建 ID(使用 -export 时)
Module *Module // 包所在模块的信息(如果有)(可以为 nil)
Match []string // 与此包匹配的命令行模式
DepOnly bool // 仅作为依赖项的包,未显式列出
// 源文件
GoFiles []string // .go 源文件(不包括 CgoFiles、TestGoFiles、XTestGoFiles)
CgoFiles []string // 导入 "C" 的 .go 源文件
CompiledGoFiles []string // 提交给编译器的 .go 文件(使用 -compiled 时)
IgnoredGoFiles []string // 由于构建约束而被忽略的 .go 源文件
IgnoredOtherFiles []string // 由于构建约束而被忽略的非 .go 源文件
CFiles []string // .c 源文件
CXXFiles []string // .cc、.cxx 和 .cpp 源文件
MFiles []string // .m 源文件
HFiles []string // .h、.hh、.hpp 和 .hxx 源文件
FFiles []string // .f、.F、.for 和 .f90 Fortran 源文件
SFiles []string // .s 源文件
SwigFiles []string // .swig 文件
SwigCXXFiles []string // .swigcxx 文件
SysoFiles []string // 要添加到归档文件的 .syso 目标文件
TestGoFiles []string // 包中的 _test.go 文件
XTestGoFiles []string // 包外的 _test.go 文件
// 嵌入文件
EmbedPatterns []string // //go:embed 模式
EmbedFiles []string // 与 EmbedPatterns 匹配的文件
TestEmbedPatterns []string // TestGoFiles 中的 //go:embed 模式
TestEmbedFiles []string // 与 TestEmbedPatterns 匹配的文件
XTestEmbedPatterns []string // XTestGoFiles 中的 //go:embed 模式
XTestEmbedFiles []string // 与 XTestEmbedPatterns 匹配的文件
// Cgo 指令
CgoCFLAGS []string // cgo:C 编译器的标志
CgoCPPFLAGS []string // cgo:C 预处理器的标志
CgoCXXFLAGS []string // cgo:C++ 编译器的标志
CgoFFLAGS []string // cgo:Fortran 编译器的标志
CgoLDFLAGS []string // cgo:链接器的标志
CgoPkgConfig []string // cgo:pkg-config 名称
// 依赖信息
Imports []string // 此包使用的导入路径
ImportMap map[string]string // 源导入路径到 ImportPath 的映射(省略了标识条目)
Deps []string // 所有(递归)导入的依赖项
TestImports []string // 来自 TestGoFiles 的导入项
XTestImports []string // 来自 XTestGoFiles 的导入项
// 错误信息
Incomplete bool // 此包或其依赖项存在错误
Error *PackageError // 加载包时的错误
DepsErrors []*PackageError // 加载依赖项时的错误
}
然后:
go list -f {{.Target}} # 打印此包的安装路径
go list -f {{.Root}} # 打印 Go 根目录或 Go 路径目录,其中包含此包
...
你还可以结合使用结构体的多个字段,例如 {{.Name}} - {{.Target}} - {{.ImportPath}}
。
英文:
This is explained in the documentation of go list that list packages or modules.
> The -f flag specifies an alternate format for the list, using the
> syntax of package template. The default output is equivalent to -f
> '{{.ImportPath}}'. The struct being passed to the template is:
type Package struct {
Dir string // directory containing package sources
ImportPath string // import path of package in dir
ImportComment string // path in import comment on package statement
Name string // package name
Doc string // package documentation string
Target string // install path
Shlib string // the shared library that contains this package (only set when -linkshared)
Goroot bool // is this package in the Go root?
Standard bool // is this package part of the standard Go library?
Stale bool // would 'go install' do anything for this package?
StaleReason string // explanation for Stale==true
Root string // Go root or Go path dir containing this package
ConflictDir string // this directory shadows Dir in $GOPATH
BinaryOnly bool // binary-only package (no longer supported)
ForTest string // package is only for use in named test
Export string // file containing export data (when using -export)
BuildID string // build ID of the compiled package (when using -export)
Module *Module // info about package's containing module, if any (can be nil)
Match []string // command-line patterns matching this package
DepOnly bool // package is only a dependency, not explicitly listed
// Source files
GoFiles []string // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles)
CgoFiles []string // .go source files that import "C"
CompiledGoFiles []string // .go files presented to compiler (when using -compiled)
IgnoredGoFiles []string // .go source files ignored due to build constraints
IgnoredOtherFiles []string // non-.go source files ignored due to build constraints
CFiles []string // .c source files
CXXFiles []string // .cc, .cxx and .cpp source files
MFiles []string // .m source files
HFiles []string // .h, .hh, .hpp and .hxx source files
FFiles []string // .f, .F, .for and .f90 Fortran source files
SFiles []string // .s source files
SwigFiles []string // .swig files
SwigCXXFiles []string // .swigcxx files
SysoFiles []string // .syso object files to add to archive
TestGoFiles []string // _test.go files in package
XTestGoFiles []string // _test.go files outside package
// Embedded files
EmbedPatterns []string // //go:embed patterns
EmbedFiles []string // files matched by EmbedPatterns
TestEmbedPatterns []string // //go:embed patterns in TestGoFiles
TestEmbedFiles []string // files matched by TestEmbedPatterns
XTestEmbedPatterns []string // //go:embed patterns in XTestGoFiles
XTestEmbedFiles []string // files matched by XTestEmbedPatterns
// Cgo directives
CgoCFLAGS []string // cgo: flags for C compiler
CgoCPPFLAGS []string // cgo: flags for C preprocessor
CgoCXXFLAGS []string // cgo: flags for C++ compiler
CgoFFLAGS []string // cgo: flags for Fortran compiler
CgoLDFLAGS []string // cgo: flags for linker
CgoPkgConfig []string // cgo: pkg-config names
// Dependency information
Imports []string // import paths used by this package
ImportMap map[string]string // map from source import to ImportPath (identity entries omitted)
Deps []string // all (recursively) imported dependencies
TestImports []string // imports from TestGoFiles
XTestImports []string // imports from XTestGoFiles
// Error information
Incomplete bool // this package or a dependency has an error
Error *PackageError // error loading package
DepsErrors []*PackageError // errors loading dependencies
}
Then :
go list -f {{.Target}} # print the install path of this package
go list -f {{.Root}} # print Go root or Go path dir containing this package
...
You can also combine using multiple field of the structure like {{.Name}} - {{.Target}} - {{.ImportPath}}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论