1
受this SO question的啓發我想使用相同的機制在我的golang應用程序中嵌入版本號。但是,我使用的是Cobra命令行解析器,並且希望有一個version
子命令。這導致了下面的目錄和包裝結構:在Golang應用程序中,如何在除main之外的其他包中嵌入版本?
.
|-- cmd
`-- version.go
|-- main.go
到現在爲止我已經試過如下:
go run -ldflags "-X cmd/version.versionString=0.1.0" main.go version
-
go run -ldflags "-X version.versionString=0.1.0" main.go version
-
go run -ldflags "-X version.VersionString=0.1.0" main.go version
隨着version.go
含有變量聲明像:
var versionString string
分別
和
var VersionString string
。
我也試圖把變量聲明中main.go
後來我不清楚如何引用變量version.go
這個選項我想:
import "github.com/basbossink/psiw"
....
fmt.Println(psiw.VersionString)
-
在這兩種情況下,編譯器都會抱怨psiw
和main
分別是未知的。 請注意,使用main
中的VersionString
可獲得預期結果。
我更喜歡一個解決方案,其鏈接標誌指向version
包中的變量,因爲它們不需要反指。但歡迎任何建議。