生成的Go文件的名称

3
我正在生成一个Go文件(包括构建版本等常量),以便这些常量可以在其他包中使用。我创建了一个小工具,可以使用go generate命令来创建该文件,但我正在思考一个合适的名称,以便:
  • 明确表明它是生成的,因此如果缺失(在构建时),用户就知道要运行go generate

  • 然后我可以将该文件添加到.gitignore中

我的第一个猜测是类似于version_GENERATED.go

有任何我应该注意的约定或更好的建议吗?

1个回答

5
文件名添加类似于“_GENERATED”这样的后缀并不包含任何信息,直到文件被生成,因为编译器只会给出“无关”的错误提示,例如“undefined: xxx”(编译器不会猜测如果标识符存在,则它将在“version_GENERATED.go”中)。
例如,stringer 生成器生成的文件名为“type_string.go”,其中类型被替换为它所生成的类型的名称。
所以,我认为只需遵循通用指南中的文件命名规则就足够了,除非使用 _gen 或 _generated 后缀。 或者,如果您的工具是公共的并且也被其他人使用,请使用工具的名称作为后缀(例如“stringer”)。
如果您确实希望用户在生成器尚未运行时获得详细的错误消息,则生成器可以生成一个导出的常量,其名称是详细的,如果在错误消息中包含该常量,则会进行提示。
const MustRunStringerGenerator = 0

并且在你的程序中像这样引用它:

var _ = MustRunStringerGenerator // Test if stringer has been run

如果尚未运行stringer,您将会看到一个错误信息:
undefined: MustRunStringerGenerator

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接