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=="
相关推荐
AntBlack3 分钟前
闲谈 :AI 生成视频哪家强 ,掘友们有没有推荐的工具?
前端·后端·aigc
南棱笑笑生13 分钟前
20250802让飞凌OK3576-C开发板在飞凌的Android14下【rk3576_u选项】适配NXP的WIFIBT模块88W8987A的蓝牙
c语言·开发语言
mit6.82433 分钟前
[Agent开发平台] API网关 | 业务领域 | DTO格式 | 分页令牌
人工智能·golang·状态模式
吉凶以情迁1 小时前
window服务相关问题探索 go语言服务开发探索调试
linux·服务器·开发语言·网络·golang
Livingbody1 小时前
使用gradio构建一个大模型多轮对话WEB应用
后端
22:30Plane-Moon1 小时前
Servlet作用域,监听器,JSP九大内置对象
java·开发语言·servlet
小白(猿)员1 小时前
JVM、JDK、JRE的区别
java·开发语言·jvm
Evand J2 小时前
【matlab例程】无迹粒子滤波(UPF)的例程,用于三维环境下多雷达目标跟踪,非线性系统
开发语言·matlab·目标跟踪
2501_924878732 小时前
无人机光伏巡检缺陷检出率↑32%:陌讯多模态融合算法实战解析
开发语言·人工智能·算法·视觉检测·无人机
计算机毕设定制辅导-无忧学长2 小时前
InfluxDB 与 Python 框架结合:Django 应用案例(三)
开发语言·python·django