GoLang是否使用保留文件名



在CI/CD管道中,我们有一个Go脚本,它在实际构建可交付工件之前进行一些预处理。如果我把脚本命名为main.go,那在GoLang世界是犯规还是可以?我不知道是否有任何与脚本的实际文件名相关的命名空间问题。

我知道main.go是脚本,main_test.go是单元测试,所以我正在学习并寻求指导。

例如,如果我从shell(MacOSbash(执行以下命令:go test这将执行main.go脚本的单元测试,这让我相信main是某种保留的文件名。不过我很容易就错了。

想法?

文件名main.go并不特殊。

Go检测到文件是测试的一部分,因为它以_test.go结尾;检测到包是二进制文件(而不是库(,因为包名称是main(换句话说,它以package main开头(。可以在库中使用名为main.go的文件。

您可以在go/build的源代码中看到go build在文件中查找的内容。它只检查_test后缀,这里是:

https://cs.opensource.google/go/go/+/refs/tags/go1.17.3:src/go/build/build.go;l=895;drc=deb3403ff52b8833df6c4e2f82cbdddeb13573dd

isTest := strings.HasSuffix(name, "_test.go")

最新更新