学习Go语言-组织源码文件

时间:2021-9-6     作者:smarteng     分类: 编程


上一节我们讲到go语言的工作区和GOPATH,这一节来说说代码文件的组织。


代码文件
代码文件分为: 命令代码文件,库代码文件和测试代码文件。
go命令文件
命令代码文件,这是程序的运行入口,是每个可独立运行的程序必须拥有的。
如果一个源码文件声明属于 main 包,并且包含一个无参数声明且无结果声明的 main 函数,那么就是命令源码文件
go的命令行功能一般都会结合flag包作为参数输入,flag包可以解析多种类型的数据,包括:
int(int|int64|uint|uint64),
float(float|float64)
string,
bool,
duration(时间),
当然也可以自定义数据类型,如果想用flag包接收自定义的数据类型,那就需要使用flag.var(),关键点在于需要实现flag包的Value接口。
go库文件
把一些代码单独拿到别的文件里面来存放,定义一个不同的包名,这样就形成了库文件,其实就是实现了一些使用库。
如果是在跟命令文件统一个目录,也需定义为 main包,只是不能再有无参数声明且无结果声明的 main 函数了。
测试代码文件
测试代码分为 单元测试和 性能测试,
含有单元测试代码的go文件必须以_test.go结尾,_test.go前面的部分最好是被测试的方法所在go文件的文件名,比如文件是xxx.go,那么测试文件是xxx_test.go
单元测试的函数名必须以Test开头,是可导出公开的函数
测试函数的签名必须接收一个指向testing.T类型的指针,并且不能返回任何值
单元测试和性能测试的写法差不多
代码包声明的规则
第一条规则,同目录下的源码文件的代码包声明语句要一致。如果目录中有命令源码文件,那么其他种类的源码文件也应该声明属于<code>main</code>包。
第二条规则,源码文件声明的代码包的名称可以与其所在的目录的名称不同。在针对代码包进行构建时,生成的结果文件的主名称与其父目录的名称一致。
要点:源码文件所在的目录相对于src目录的相对路径就是它的代码包导入路径,而实际使用其程序实体时给定的限定符要与它声明所属的代码包名称对应。
包名最好跟目录名一致。
internal 代码包中声明的公开程序实体仅能被该代码包的直接父包及其子包中的代码引用。

标签: go golang