生成的 go 文件的名称

Name for a generated go file

我正在生成一个 Go 文件(以包含构建版本等常量),以便这些常量可以在其他包中使用。我创建了一个小工具,可以用 go generate 创建文件,但我正在尝试想一个合适的名称,以便

我的第一个猜测是 version_GENERATED.go

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

在文件名中添加像 _GENERATED 这样的后缀在生成文件之前不会包含任何信息,因为编译器只会给你 "unrelated" 错误,比如 "undefined: xxx" (编译器不会猜测标识符是否存在,它会在 version_GENERATED.go).

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

所以我认为只要在文件名后面加上 general guidelines 就足够了,除了可以使用 _gen_generated 后缀。或者,如果您的工具是 public 并且也被其他人使用,则使用工具的名称作为后缀(就像 stringer 一样)。

如果您确实希望用户在您的生成器尚未成为 运行 的情况下收到多话的错误消息,您的生成器可能会生成一个导出常量,如果包含在错误消息中,其名称是多话的,例如:

const MustRunStringerGenerator = 0

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

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

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

undefined: MustRunStringerGenerator