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=="
相关推荐
Mintopia7 分钟前
🚀 Next.js Edge Runtime 实践学习指南 —— 从零到边缘的奇幻旅行
前端·后端·全栈
紫荆鱼13 分钟前
设计模式-备忘录模式(Memento)
c++·后端·设计模式·备忘录模式
软件20522 分钟前
【JDK、JRE、JVM】
java·开发语言·jvm
Wind哥23 分钟前
VS Code搭建C/C++开发调试环境-Windows
c语言·开发语言·c++·visual studio code
程序员爱钓鱼28 分钟前
Python编程实战 · 基础入门篇 | 字典(dict)
后端·python·ipython
程序员爱钓鱼30 分钟前
Python编程实战 · 基础入门篇 | 集合(set)
后端·python·ipython
csbysj202036 分钟前
CSS 属性选择器详解
开发语言
彭同学她同桌39 分钟前
Mac-终端
开发语言·javascript·macos
IT_陈寒1 小时前
Python 3.12震撼发布:5大性能优化让你的代码提速50%,第3点太香了!
前端·人工智能·后端
Moshow郑锴1 小时前
Oracle CLOB中包含不可见的控制字符导致golang中json转换失败问题
oracle·golang·json