时间:2021-05-22
前言
以前在写C/C++代码时,可以在代码中预定义一些版本宏定义,然后再编译时从外部传入数据作为版本号。 golang代码不支持宏定义,如果每次在代码中硬编码版本信息,一来费时费力,二来很容易忘记更新。
如何更优雅的维护golang程序的版本号呢?
翻阅golang文档之后,在go build发现下面的参数
-ldflags 'flag list' arguments to pass on each go tool link invocation.然后在linker中发现:
-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.按照文档中的说明应该是在build时,通过-ldflags设定linker的参数。 然后再通过linker的-X来修改指定路径下面的变量值。
按照这个逻辑,我们改写下面的程序:
package mainimport ( "fmt")var _VERSION_ = "unknown"func main() { fmt.Printf("Version:[%s]\n", _VERSION_)}执行下面的build命令:
export TAG=dev-xxxx go build -ldflags "-X main._VERSION_='$TAG'"在执行程序时,就可以看到输出预定义的版本号了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言所谓“语义化版本号”,就是在版本号中体现出语义,或者说版本号本身是有意义的,不再是随意给的一个数字。这个规范将版本号中每个数字的意义都做了比较严格的说明。当
在项目开发过程中遇到app端自动更新,查阅了相关资料然后把Appcan客户端自动更新PHP版本号的方法整理出来,具体代码讲解如下。服务端文件:update.ph
Eclipse配置springIDE插件的方法步骤一、springide下载技巧查看eclipse的版本号。(如我的就是4.17.0)(查看版本号方法:help
淘宝钻展从1.0版本号到2.0版本号再到3.0版本号及其下面将要颁布的4.0版本号,小结出来的三大难点只不过也就下边这三个,如何解决这三个难题是今日共享的主题风
IOS获取APP版本号的实例详解看代码的时候看到一句,用于获取.plist文件的版本号?1labelVersion.text=[NSStringstringWi