新聞中心
前言
成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括千陽網(wǎng)站建設(shè)、千陽網(wǎng)站制作、千陽網(wǎng)頁制作以及千陽網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,千陽網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到千陽省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
以前在寫C/C++代碼時,可以在代碼中預(yù)定義一些版本宏定義,然后再編譯時從外部傳入數(shù)據(jù)作為版本號。 golang代碼不支持宏定義,如果每次在代碼中硬編碼版本信息,一來費(fèi)時費(fèi)力,二來很容易忘記更新。
如何更優(yōu)雅的維護(hù)golang程序的版本號呢?
翻閱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時,通過-ldflags設(shè)定linker的參數(shù)。 然后再通過linker的-X來修改指定路徑下面的變量值。
按照這個邏輯,我們改寫下面的程序:
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í)行程序時,就可以看到輸出預(yù)定義的版本號了。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對創(chuàng)新互聯(lián)的支持。
新聞名稱:在Golang代碼中如何自動生成版本號的方法示例
鏈接地址:http://www.ef60e0e.cn/article/gjpjee.html