我正在生成一个Go文件(包括诸如构建版本之类的常量等),以便常量可以在其他包中使用。我创建了一个小工具,它将使用go generate
创建文件,但我正在尝试考虑一个合适的名称,以便
很明显它是生成的,所以如果缺少(在构建时),用户就会知道运行go generate
然后我可以将文件添加到.gitignore
我的第一个猜测是version_GENERATED.go
我应该了解的任何约定或更好的建议?
答案 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