在Golang代碼中如何自動(dòng)生成版本號(hào)的方法示例
前言
以前在寫C/C++代碼時(shí),可以在代碼中預(yù)定義一些版本宏定義,然后再編譯時(shí)從外部傳入數(shù)據(jù)作為版本號(hào)。 golang代碼不支持宏定義,如果每次在代碼中硬編碼版本信息,一來(lái)費(fèi)時(shí)費(fèi)力,二來(lái)很容易忘記更新。
如何更優(yōu)雅的維護(hù)golang程序的版本號(hào)呢?
翻閱golang文檔之后,在go build發(fā)現(xiàn)下面的參數(shù)
-ldflags 'flag list' arguments to pass on each go tool link invocation.
然后在linker中發(fā)現(xiàn):
-X importpath.name=value Set the value of the string variable in importpath named name to value. Note that before Go 1.5 this option took two separate arguments. Now it takes one argument split on the first = sign.
按照文檔中的說明應(yīng)該是在build時(shí),通過-ldflags設(shè)定linker的參數(shù)。 然后再通過linker的-X來(lái)修改指定路徑下面的變量值。
按照這個(gè)邏輯,我們改寫下面的程序:
package main
import (
"fmt"
)
var _VERSION_ = "unknown"
func main() {
fmt.Printf("Version:[%s]\n", _VERSION_)
}
執(zhí)行下面的build命令:
export TAG=dev-xxxx go build -ldflags "-X main._VERSION_='$TAG'"
在執(zhí)行程序時(shí),就可以看到輸出預(yù)定義的版本號(hào)了。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
使用VSCODE配置GO語(yǔ)言開發(fā)環(huán)境的完整步驟
Go語(yǔ)言是采用UTF8編碼的,理論上使用任何文本編輯器都能做Go語(yǔ)言開發(fā),大家可以根據(jù)自己的喜好自行選擇,下面這篇文章主要給大家介紹了關(guān)于使用VSCODE配置GO語(yǔ)言開發(fā)環(huán)境的完整步驟,需要的朋友可以參考下2022-11-11
使用Golang的channel交叉打印兩個(gè)數(shù)組的操作
這篇文章主要介紹了使用Golang的channel交叉打印兩個(gè)數(shù)組的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2021-04-04

