golang程序添加版本号

golang程序添加版本号

这段时间项目经常发布版本,导致我们版本管理混乱。特别是在真实环境上面,没有了版本控制软件协助版本管理,我们无法确认程序到底是新版本还是旧版本。这给我们排查问题带来了很大困扰。于是,我就想给程序本身打上版本号,通过程序就可以看到程序是新版本还是旧版本了。
查看资料发现golang不能像C++那样通过宏定义方式来设置版本号,但是可以在build 时添加参数-ldflags 来添加版本号,如下:

go build -ldflags "-X 'main.MinVersion=1.0.0.1' " -a -v -o xxx.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 xxx.exe main.go

代码里面也需要做对应修改,还是贴上代码吧:

package main

import (
	"fmt"
)

var MinVersion string
var PublishDate string

func main() {
	fmt.Println("当前版本号:%s 发布日期:%s", MinVersion, PublishDate))
}

打印出来的效果是这样的:

当前版本号: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命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值