gpt4 book ai didi

go generate with gofmt,替换变量值

转载 作者:IT王子 更新时间:2023-10-29 00:44:07 25 4
gpt4 key购买 nike

发布 'generate'工具开辟了很多令人兴奋的可能性。我一直在努力使我的测试更好。我有一个查询外部 API 的函数,该 API 的位置在全局变量中定义。难题之一是将该值替换为在“生成时”确定的值。

我有:

//go:generate gofmt -w -r "var apiUrl = a -> var apiUrl = \"http://example.com\"" $GOFILE

运行 go generate 然后出错:

parsing pattern var apiUrl = a  at 1:1: expected operand, found 'var'

不能像这样使用占位符:

gofmt -r 'API_GOES_HERE -> "http://example.com"' -w

那是因为,当我编译生产代码时,源代码被重写了,所以后续的测试编译不能再替换占位符(它已经被替换了)。

我意识到我在某种程度上滥用了 gofmt,但我不想回到 sed。什么是有效的 go:generate 语句?

最佳答案

您可以为此使用链接器标志 -X。例如,

go build -ldflags "-X main.APIURL 'http://example.com'"

将使用 APIURL 变量设置为 http://example.com 构建您的程序。

More info in the linker docs .


Go 1.5 编辑:从 Go 1.5 开始,它是 recommended使用新格式:

go build -ldflags "-X main.APIURL=http://example.com"

(注意等号。)

关于go generate with gofmt,替换变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27521611/

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