生成的go文件的名称

时间:2016-04-27 12:42:21

标签: go naming-conventions code-generation

我正在生成一个Go文件(包括诸如构建版本之类的常量等),以便常量可以在其他包中使用。我创建了一个小工具,它将使用go generate创建文件,但我正在尝试考虑一个合适的名称,以便

  • 很明显它是生成的,所以如果缺少(在构建时),用户就会知道运行go generate

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

我的第一个猜测是version_GENERATED.go

我应该了解的任何约定或更好的建议?

1 个答案:

答案 0 :(得分:3)

在生成文件之前,在文件名中加上_GENERATED这样的后缀不会保留任何信息,因为编译器只会给你"不相关的"像"undefined: xxx"这样的错误(编译器不会猜测,如果标识符存在,它将在version_GENERATED.go中)。

例如,stringer生成器生成名称为type_string.go的文件,其中type将替换为其生成类型的名称。

所以我认为仅仅使用general guidelines文件名就足够了,除了使用_gen_generated后缀。或者,如果您的工具是公开的并且也被其他人使用,则使用工具的名称作为后缀(如stringer所做的那样)。

如果您确实希望用户在您的生成器尚未运行时收到健谈错误消息,则生成器可能会生成一个导出的常量,如果包含在错误消息中,该常量的名称是健谈的,例如:

const MustRunStringerGenerator = 0

在你的程序中,请参考它:

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

如果尚未运行stringer,您会看到错误消息:

undefined: MustRunStringerGenerator
相关问题