【问题标题】:Go - "version" package and How it works?Go - “版本”包以及它是如何工作的?
【发布时间】:2023-03-23 09:16:01
【问题描述】:

我正在研究在不同的开源项目(例如operator-framework/operator-sdk)中组织项目的方法,有时会找到带有version.go 文件的version 包:

├── build
├── cmd
├── deploy
├── go.mod
├── go.sum
├── pkg
├── tools.go
└── version
    └── version.go

package version

var (
    Version = "0.0.1"
)

我试图找到如何使用它来控制应用程序版本,但发现只有方法使用-ldflags

是否存在其他使用version 包和version.go 文件的方式?

【问题讨论】:

    标签: go versioning ldflags


    【解决方案1】:

    是否存在其他使用版本包和version.go文件的方式?

    没有。

    【讨论】:

    • 我怎样才能从appfmt.Print(...)除外)获得Version值?
    • 你不能。 Go 二进制文件本身没有“版本”。它们只是可能知道也可能不知道和/或公开其“版本”的二进制文件。
    • 这意味着如果我想维护二进制文件的版本,我必须在构建应用程序时将“版本”设置为var 使用-ldflags,然后从二进制文件中获取“版本”使用自己实现的机制(例如CLIcobra 库实现)?!
    • 是的,这是一种可能的方式。在构建期间通过 -ldflags 设置 version 变量和打印 version-version 标志很常见。其他事情也是可能的。
    猜你喜欢
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多