【发布时间】:2019-09-02 12:50:01
【问题描述】:
我们在 repo 中使用了一些代码模板,我们依靠 go:generate 从这些模板生成所有需要的代码。
因为有多个模板,并且我们从每个模板生成多个实际代码,所以生成代码的一致性已成为一个问题:我们需要一个命令来运行并确保所有生成的代码都与相应的模板保持同步。为此,我们有一个简单的 bash 命令,它可以查找所有包含 go:generate 的文件,并在其目录中运行 go generate。
问题是这种方法真的很慢:大部分模板没有改变,所以不需要再次生成它们的代码。
有没有办法告诉go generate 仅在模板比文件新时运行?或者,除此之外还有什么更好的方法吗?
非常感谢。
【问题讨论】:
-
你有什么样的模板?又会生成什么样的代码?
-
这是泛型的一种解决方法:正在生成的代码是有效且可编译的 go,模板是包含一些变量的 go 代码,这些变量将被多个结构名称替换
标签: go generated-code