gpt4 book ai didi

go - 从已编译的二进制文件中读取命令行标志

转载 作者:IT王子 更新时间:2023-10-29 02:06:43 28 4
gpt4 key购买 nike

我创建了一个简单的程序,我在其中设置了 2 个标志并构建了它。如何从编译的二进制文件中读取这些标志并设置这 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)
}

主.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

然后你可以调用你的二进制文件,它可以返回嵌入的值。
同样的想法在GoogleContainerTools/container-diff commit 367eb42来自 PR 304 .
这在 ahmetb/govvv 中是自动的(再次作为示例)

关于go - 从已编译的二进制文件中读取命令行标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56607912/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com