Go 有文件名限制吗?

Does Go have file name restrictions?

我用方括号创建了一个名为 [id].go 的文件,但我无法构建它。

当我 运行 go build "[id].go" 时,我看到以下内容:

can't load package: package main: invalid input file name "[id].go"

Go文件名有限制吗?具体来说,什么是不允许的?如有请提供证明文件。

在撰写本文时,Go 文件必须以下列之一开头:

  • 09
  • az
  • AZ
  • .(句号)
  • _(下划线)
  • /(正斜杠)
  • >= utf8.RuneSelf(字符 0x80 或更高)
  • 同一文件夹中的两个或多个文件不能命名相同(不区分大小写的匹配)

https://github.com/golang/go/blob/993ec7f6cdaeb38b88091f42d6369d408dcb894b/src/cmd/go/internal/load/pkg.go#L1826-L1835

To be conservative, we reject almost any arg beginning with non-alphanumeric ASCII.

举个例子,如果您尝试将 a[id].go 作为文件名,您就可以开始了。