在”go list -f”中,{{.Target}}是什么意思?

huangapple go评论88阅读模式
英文:

What is {{.Target}} in "go list -f"

问题

这里显示的{{.Target}}是什么:

> 在”go list -f”中,{{.Target}}是什么意思?

英文:

What is {{.Target}} shown in here:

> 在”go list -f”中,{{.Target}}是什么意思?

答案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}}

huangapple
  • 本文由 发表于 2021年6月28日 04:34:18
  • 转载请务必保留本文链接:https://go.coder-hub.com/68155059.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定