在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")