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=="
相关推荐
ytttr8734 分钟前
Qt 数字键盘实现
开发语言·qt
wearegogog1237 分钟前
C# .NET 文件比较工具 WinForms
开发语言·c#·.net
再写一行代码就下班11 分钟前
Cursor配置Java环境、创建Spring Boot项目的步骤
java·开发语言·spring boot
零陵上将军_xdr14 分钟前
后端转全栈学习-Day5-JavaScript 基础-3
开发语言·javascript·学习
摇滚侠15 分钟前
Java 零基础全套教程,类的加载过程与类加载器的理解,笔记 189
java·后端·intellij-idea
ServBay22 分钟前
为什么我劝你不要在Mac上用Docker 进行本地 AI 开发
后端
oqX0Cazj224 分钟前
2026超火Go-Zero实战:从架构原理到高并发接口落地,彻底解决接口超时、雪崩问题
开发语言·架构·golang
蝎子莱莱爱打怪25 分钟前
XZLL-IM干货系列 02|Protobuf 协议设计:从 JSON 切到二进制,每条消息省了 60%
后端·面试·架构
学会去珍惜28 分钟前
C语言简介
c语言·开发语言
思麟呀31 分钟前
C++11 核心特性(三):强类型枚举、static_assert 与 std::tuple
开发语言·c++