“生成”工具的发布开辟了许多令人兴奋的可能性。我一直在努力让我的测试变得更好。我有一个查询外部 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
陈述?