参考文章: http://stackoverflow.com/questions/11354518/golang-application-auto-build-versioning
昨天在查询怎么生成一个小体积的golang程序的时候,无意中发现这个文章.
对于固定的代码,及固定的golang版本,下面的命令总是得到一模一样的程序
go build
有时候需要为每个编译都打上标记,不然真的很乱啊
演示用的golang代码
package main
var _VERSION_ = "unknown"
func main() {
print("http_su ver=" + _VERSION_ + "\n")
}
编译时,加入需要的版本号信息,而不是直接去改main.go的源码
export TAG=v1.b.50
go build -ldflags "-X main._VERSION_ '$TAG'"
运行结果:
> go build
> ./demo
http_su ver=unknown
> export TAG=v.1.b.50
> go build -ldflags "-X main._VERSION_ '$TAG'"
> ./demo
http_su ver=v.1.b.50
可以看到, 版本号根据编译参数的变化而变化了. 关键点是, 必须是 $package.$varName
本demo在linux/macos/windows/arm下测试通过.
作者:翁志艺
分享到:
相关推荐
Golang,通常简称为Go,是由Google开发的一种静态类型、编译型、并发型且具有垃圾回收功能的编程语言。Go语言的设计目标是提高开发效率和程序性能,因此它是构建高效、可靠和可扩展的软件的理想选择。Go-Goca利用了...
在编译Go程序时,Go编译器将源代码编译为机器无关的中间字节码,再通过运行时系统将其转换为机器码执行。这个过程中,类型检查器(type checker)和语法分析器(parser)是编译过程中的关键组件。类型检查器确保了...
综上所述,"惜时光微信小程序后端API GoLang版"是一个采用Go语言开发的微信小程序后端服务,它涵盖了微信小程序的API设计、数据库交互、安全性控制、调试测试等多个方面,体现了Go语言在构建高性能后端服务方面的...
本文将深入探讨一个名为Go-Globe的项目,这是一个利用Golang(Go语言)实现的地球线框可视化库。通过学习和理解Go-Globe,我们可以提升在数据可视化、Web应用开发以及3D图形处理方面的技能。 首先,让我们了解一下...
综合来看,这个压缩包为学习者提供了实践前端和Golang技术的平台,涵盖了从基础到进阶的各种概念,有助于提升全栈开发能力。通过分析和运行这些代码,学习者能够加深对Web开发流程的理解,提高实际开发中的问题解决...
4. 实现AR功能,可能涉及到标记检测、追踪、3D渲染等技术,使用户可以通过摄像头看到叠加在现实世界上的虚拟信息。 总的来说,这个项目展示了如何将先进的计算机视觉技术与移动端开发平台相结合,以创建具有创新...
Go-ljgo 是一个基于 Go 语言构建的静态博客生成工具,它以其简洁的设计、快速的编译速度和易于安装的特点,为用户提供了便捷的博客搭建体验。在 Go 语言的支持下,ljgo 能够充分发挥 Go 的并发优势和高效的编译特性...
虽然Hugo自身已经很强大,但它的插件系统允许开发者通过编写Go程序来扩展其功能。例如,可以通过编写插件实现自定义的短代码,以增强Markdown的表达能力。 7. **社区支持与文档** Hugo有一个活跃的开发者社区,...
Go语言(通常称为Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。从2012年发布第一个稳定版本开始,Go语言得到了广泛的应用。特别是Go语言的垃圾回收(GC)机制,它是编程...
Go语言,通常被称为Golang,是由Google开发的一种静态类型的、编译式的、垃圾回收的、并发型且具有C风格语法的编程语言。本教程基于w3cschool官网的Golang教程,旨在为初学者和有经验的程序员提供一个全面的学习平台...
Go语言,简称Golang,是由Google开发的一种静态类型、编译型、并发型且具有垃圾回收功能的编程语言。它以其简洁的语法、高效的性能以及内置的并发支持赢得了广大开发者喜爱。在本文中,我们将深入探讨Go语言的源码,...
在深入探讨Golang的细节和底层机制之前,我们先理解一下Golang,也称为Go语言,是由Google开发的一种静态类型、编译型、并发型且具有垃圾回收功能的编程语言。Go语言的设计目标是提高软件构造的简单性和可靠性,特别...
词法分析将源代码分解成一个个的“标记”(tokens),语法分析将这些标记组合成抽象语法树(AST),语义分析检查程序的逻辑和类型正确性,最后代码生成器将AST转换为虚拟机的字节码指令。 然后是解释器。解释器直接...
- 平台无关性:Golang编译的程序可以跨平台运行,因此GoCHM可在多种操作系统上生成CHM文件。 - 自定义配置:支持自定义生成的CHM文件的索引、书签等设置。 - 友好的API:对于开发人员,GoCHM提供API,可以与其他...
3. **类型安全**:Go是一种静态类型语言,它在编译时检查类型,因此,如果在字符串到字节切片的转换中存在类型错误,程序会在编译阶段报错。然而,如果在转换过程中未正确处理边界条件,例如尝试访问超出字符串长度...
在这一阶段,源代码被读入并转化为一系列的标记(token),接着通过解析器构造出语法树。语法树是源代码结构的精确表示,每个节点对应源代码中的元素,如变量声明、函数定义、表达式等。此外,它还包含了位置信息,这...
在内存管理上,编译期间存在的字符串会被标记为只读的`SRODATA`符号,这意味着在程序运行时,这些字符串不能直接被修改。然而,可以创建新的字节数组(`[]byte`类型)来拷贝字符串的内容,然后对字节数组进行修改。...
Go语言,由Google公司设计,是一门静态类型的、编译型的、并发式的、垃圾回收的编程语言。它具有简洁的语法,强调代码的可读性和简洁性,特别适合于构建高并发、高性能的服务端应用。Go语言中的并发机制,如...