1 回答
TA贡献1777条经验 获得超10个赞
在编译/构建时
您可以使用该go list -m all
命令查看将在构建中用于所有直接和间接依赖项的最终版本 ( source )。在运行时
在运行时(从您的应用程序)您可以使用该debug.ReadBuildInfo()
功能:
ReadBuildInfo 返回嵌入在运行的二进制文件中的构建信息。该信息仅在使用模块支持构建的二进制文件中可用。
注意:debug.ReadBuildInfo()
仅在Go 1.12(一天前发布)中添加。
获取和打印构建信息的示例(递归)。最简单的是对构建信息进行 JSON 编组:
wg2.Wait()
close(oneResult)
// ...
for n := range oneResult{
// ...每个命令都可以选择性地指定一个“子命令”。子命令的类型为Command,它允许将嵌套/组合命令组合在一起。
实现类似的目标:
cli-tool command1 command2 --command2flag
你可以有一个像这样的命令结构:
app := &cli.App{
//...
Commands: []*cli.Command{
{
Name: "command1",
Usage: // ...
Action: //...
SubCommand: []cli.Command{
{
Name: "command2"
Flags: []cli.Flag{
cli.StringFlag{
Name: "command2flag"
// ...
},
},
},
},
},
//...
}
您可以在这里看到 command2 嵌套在 command1 的子命令中。并且 command2 的标志将仅适用于 command2。这是本地标志的示例。
全局标志将应用于每个命令和子命令。这对于 cli 工具可能需要用于所有命令的某种配置可能很有用。例如要与之交谈的服务器地址等。
示例输出
具有单个依赖项的项目的示例输出:) github.com/globalsign/mgo。
运行go list -m all:
mytest
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8
在运行时获取和 JSON 编组构建信息:
{
"Path": "mytest",
"Main": {
"Path": "mytest",
"Version": "(devel)",
"Sum": "",
"Replace": null
},
"Deps": [
{
"Path": "github.com/globalsign/mgo",
"Version": "v0.0.0-20181015135952-eeefdecb41b8",
"Sum": "h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is=",
"Replace": null
}
]
}
- 1 回答
- 0 关注
- 79 浏览
添加回答
举报