更新时间: 2023-05-29 09:50:44#go 编译时候嵌入 变量或者文件 embed 2种方案 ldflags | //go:embed hello.txt #1. ldflags// go build -ldflags "-X 'main.Version=1.1.1'" // 设置变量. 只适合设置变量 长文件用base64转成字符串,也支持小的二进制。6000行没问题 1.8w行 报错build.sh: line 6: /opt/go/bin/go: Argument list too long 读取文件 时候 #! /bin/bash content=`base64 < hello.txt > zzz` flags="-X main.Name=`cat zzz`" rm zzz go build -ldflags "$flags" -o lmq main.go # go build -ldflags "$flags" -x -o lmq main.go // -x 各种编译参数 内部转成原文件 存起来 func InitFile(content string) { strarr, err := base64.StdEncoding.DecodeString(content) if err != nil { fmt.Println("decode base64 error ", err) } str = string(strarr) } #2. //go:embed hello.txt 更简洁//go:embed hello.txt var Name string // 嵌入多个文件 //go:embed hello.txt //go:embed hello2.txt var f embed.FS func main() { data, _ := f.ReadFile("hello.txt") // 读取 fmt.Println(string(data)) data, _ = f.ReadFile("hello2.txt") fmt.Println(string(data)) }