這段時間專案經常發布版本,導致我們版本管理混亂。特別是在真實環境上面,沒有了版本控制軟體協助版本管理,我們無法確認程式到底是新版本還是舊版本。這給我們排查問題帶來了很大困擾。於是,我就想給程式本身打上版本號,通過程式就可以看到程式是新版本還是舊版本了。
檢視資料發現golang不能像c++那樣通過巨集定義方式來設定版本號,但是可以在build 時新增引數-ldflags 來新增版本號,如下:
go build -ldflags "-x 'main.minversion=1.0.0.1' "
-a -v -o ***.exe main.
go
這樣,通過以上編譯語句,每次發布版本時,更改main.minversion=1.0.0.1為相應的版本號即可。
如果,哪一次我們忘記了更改版本號就發布出去了,怎麼辦?沒辦法,因為版本號沒有沒有改,我們無法分辨新版本與舊版本。那麼,如何優化這個問題呢?我想給這個版本號新增乙個時間戳!這樣即使忘記了更改版本號,也可以通過時間戳來確定新舊版本。編譯引數如下:
set releasedate=
%date:~0,4
%%date:~5,2
%%date:~8,2
%%time:~0,2
%%time:~3,2
%%time:~6,2
%go build -ldflags "-x 'main.minversion=1.0.0.1' -x 'main.publishdate=%releasedate%'"
-a -v -o ***.exe main.
go
**裡面也需要做對應修改,還是貼上**吧:
package main
import
("fmt"
)var minversion string
var publishdate string
func
main()
列印出來的效果是這樣的:
當前版本號:
1.0.0
.1 發布日期:
20191011103222
嘿嘿,這樣既有版本號,又有時間戳,就不怕不能區分程式版本啦~~~
這裡順便介紹一下日期格式吧
%date:~0,4% 表示從左向右指標向右偏0位,然後從指標偏移到的位置開始提取4位字元,結果是2014(年的值)
%date:~5,2% 表示指標從左向右偏移5位,然後從偏移處開始提取2位字元,結果是03(月的值)
%date:~8,2% 表示指標從左向右偏移8位,然後從偏移處開始提取2位字元,結果是01(日的值)
%date:~5% 表示指標從左向右偏移5位,然後提取所有的值
%date:~-5% 表示指標反方向偏移,從最右端開始,偏移5位,然後從指標處提取左邊的所有數值。
注意:以上編譯指令碼,只適用於windows系統環境下編譯。如果需要在linux下面使用需要將對應的cmd命令轉換成shell命令。
seajs版本號新增
with 24 comments 用 seajs 組織專案,上線後,經常需要更新特定檔案或所有檔案的時間戳,以清空瀏覽器快取。最簡單的方式是 define function require,exports 這種方式很簡單直觀,弊端也很明顯 檔案一多,時間戳會分散在各個檔案,維護起來不方便。第二種方式...
golang 獲取exe dll apk 版本號
通過go獲取exe dll apk版本號,支援誇平台,可交叉編譯。換了個賬號,審核下。我把另乙個賬號的文章都會刪掉。golang 實現讀取exe dll apk 版本號 獲取exe dll版本 func f fileinfo getexeversion err error peoffset f.un...
golang實現版本號比較
寫一下,好久沒更新部落格了。import fmt strings testing time created by 908204694 qq.com 版本號大 const versionbig 1 版本號小 const versionsmall 2 版本號相等 const versionequal 0...