go - 从已编译的二进制文件中读取命令行标志
问题描述
我创建了一个简单的程序,在其中设置了 2 个标志并构建它。如何读取这些标志并从编译的二进制文件中设置这两个值?
我尝试以多种方式读取文件,但没有找到标志值。
标志.go
var (
name *string
version *int
)
func init(){
name = flag.String("name","test", "a string")
version = flag.Int("version", 1.0, "an int")
}
func main(){
flag.Parse()
fmt.Println("name : ", *name)
fmt.Println("version : ", *version)
}
main.go
func main(){
path := "/Users/____/Desktop/flag"
dat,_ := ioutil.ReadFile(path)
strings.Contains(string(dat),"name")
fmt.Println("%s opened\n", dat)
}
我想从编译的二进制文件中找到标志值并将其存储到主程序变量中。类似的东西
var flagMain = 测试 var versionMain = 1.0
解决方案
flag.Parse()
是运行时操作。
读回嵌入的值意味着该值是在编译时嵌入的。
看AgentZombie go-embed-version
一个例子:
go build -o /tmp/versserv -ldflags "-X github.com/AgentZombie/go-embed-version/cmd.Version=foo" server/server.go
然后你可以调用你的二进制文件,它可以返回嵌入的值。来自PR 304的提交 367eb42
中的
相同想法。
这是自动化的(再次作为示例)GoogleContainerTools/container-diff
ahmetb/govvv
推荐阅读
- java - android studio中谷歌地图上的位置未更新
- google-chrome-extension - chrome 扩展清单 v3,访问窗口变量
- typescript - 根据随机数在 Prisma ORM 中查找多行
- javascript - 如何使用jquery在输入字段的一行中创建多个显示
- tensorflow - 使用功能 API 在 Keras 中的 LSTM 输入层形状
- r - ggplot2 - 图例没有出现
- javascript - 如何使用 firebase admin sdk 将图像上传到 firebase 存储?
- powerbi - 报表不显示 Power BI 上的刷新数据 - SSAS 表格模型
- html - Angular 11 不应用具有不同状态的多个转换
- vba - 如何从 Microsoft Word for Mac 版本 16 中的剪贴板获取文本?