命令源码文件
命令源码文件是程序的运行入口,是每个可独立运行的程序必须拥有的。我们可以通过构建或安装生成与其对应的可执行文件,后者一般会与该命令源码文件的直接父目录同名。如果一个源码文件声明属于main包,并且包含一个无参数声明且无结果声明的main函数,那么就是命令源码文件。在main包中只允许一个main函数,否则编译报错
库源码文件
库源码文件不能被直接运行,它仅用于存放程序实体。只要遵从 Go 语言规范,这些程序实体就可以被其他代码使用。这些“其他代码”可以与被使用的程序实体在同一个源码文件内,也可以在其他源码文件,甚至其他代码包中。
测试源码文件
文件名:测试源码文件的主名称应该以被测源码文件的主名称为前导,并且必须以“_test”为后缀。例如,如果被测源码文件的名称为 demo.go,那么针对它的测试源码文件的名称就应该demo_test.go。
测试函数的名称和签名的限制
功能测试函数:其名称必须以Test为前缀,并且参数列表中只应有一个*testing.T类型的参数声明。
func TestDemo(t *testing.T) {
// 编写需要测试的代码
}
性能测试函数:其名称必须以Benchmark为前缀,并且唯一参数的类型必须是*testing.B类型的。
func BenchmarkDemo(t *testing.B) {
// 编写需要测试的代码
}
示例测试函数:其名称必须以Example为前缀,但对函数的参数列表没有强制规定。
func ExampleDemo(){
//程序的使用方式
}
代码包声明的基本规则
第一条规则:同目录下的源码文件的代码包声明语句要一致。也就是说,它们要同属于一个代码包。这对于所有源码文件都是适用的。如果目录中有命令源码文件,那么其他种类的源码文件也应该声明属于main包。这也是我们能够成功构建和运行它们的前提。
第二条规则:源码文件声明的代码包的名称可以与其所在的目录的名称不同。在针对代码包进行构建时,生成的结果文件的主名称与其父目录的名称一致。