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 關注
- 109 瀏覽
添加回答
舉報