golang编译时传递参数或注入变量值到程序中

1、使用编译参数-ldflags

可以将参数值赋值到某一个包中的变量

go 复制代码
var version string
fmt.Println("version: " + version)

编译:go build -ldflags="-X 'voteapi/app/health/http/server.version=1.0.0'"

如果你使用了模块(module),请确保导入路径正确,也就是使用完整路径,如果路径不对,它也不会报错。

使用单引号包裹整个 -X 参数可以避免空格问题。

可以赋值多个参数:-X 'main.version=1.0.0' -X 'main.buildTime=2025-06-19'

可以使用环境变量:-X 'main.version=$VERSION' -X 'main.buildTime=$BUILDTIME'

2、go generate指令

生成随机字符串:openssl rand -base64 16

获取git版本号:git describe --tags

最终指令如下

//go:generate sh -c "echo 'package main' > version.go && echo \"var version = \\\"$(openssl rand -base64 16)\\\"\" >> version.go"

需要手动执行go generate,生成的version.go文件

go 复制代码
package main
var version = "0Mh+gzfOKyIMpDB5m8sEsA=="
相关推荐
JWASX几秒前
go 学习 - prometheus 指标协程池监控
学习·golang·prometheus
Do_It_Today3 分钟前
PHP xpath()函数讲解
开发语言·php
YYYing.4 分钟前
【Python系列 (一) 】Python基础疑难杂症
开发语言·python
rannn_1117 分钟前
JVM 垃圾回收面试题全解析:从基础到进阶
java·开发语言·jvm·后端·面试
AINative软件工程8 分钟前
LLM 应用的 Observability 三件套:Metrics、Logs、Traces 的生产级接入工程实践
后端·python·架构
geovindu9 分钟前
rust: Simple Factory Pattern(续)
后端·设计模式·rust·简单工厂模式·创建型模式
知野小兔14 分钟前
JavaScript 数组方法大全(超详细整理)
开发语言·前端·javascript
哈__15 分钟前
飞牛OS还在手动维护?我用Ansible把重复操作写成了Playbook
开发语言·ansible·php
道尔柯南15 分钟前
【QT】从零认识 Qt:跨平台 C++ GUI 开发入门
开发语言·c++·qt
高频因子挖掘机17 分钟前
股票分钟 K 线为什么需要关注交易时段?——忽略这一点,回测可能从数据层就偏了
后端·github·api