为什么需要工程管理
在实际的开发工作中不会简单到只有一个源代码文件,且源代码文件之间会有相互依赖关系,如果一个文件一个文件的编译,效率太过于低下。
Go命令行工具
Go命令行工具完全用目录结构和包名来推导工程结构和构建顺序。
举例:
<calcproj>
|——<src>
|——<calc>
|——calc.go
|——<simplemath>
|——add.go
|——add_test.go
|——sqrt.go
|——sqrt_test.go
|——<bin>
|——<pkg>#包将被安装到此处
这是一个“基于命令行的计算器程序”的工程结构。
<>表示这是一个目录,***_test.go文件是对一个***.go的单元测试,这是Go工程里面要求的命名规则。
calc目录下的文件是可执行程序,用于跟交互让用户输入计算的类型和参数;
simplemath这个目录下的文件是具体的计算类型实现文件,比如算加法就调用add.go。
构建工程,编译
为了构建这个工程,需要先把这个工程的根目录放到环境变量GOPATH中
eg:export GOPATCH=~/gojiaoben/calcproj
GOPATH和PATH环境变量一样,可以写多个路径,用冒号隔开不同的路径;
设置完GOPATH后,就可以构建工程:
比如,把可执行程序放到bin目录下:
cd ~/gojiaoben/calcproj
mkdir bin
cd bin
go build calc
这样在bin目录下就会看到一个calc.exe的文件。执行该文件可以正常的进行计算。
在simplemath目录下的文件代码中需要指定包为simplemath
package simplemath
在calc.go文件中需要引入包号:
package main
import "simplemath"
在我们执行编译命令时,Go命令行工具会自动分析目标代码的编译结果应该是个包还是可执行文件,并分析import语句以了解包的依赖关系,从而在编辑calc.go之前把依赖的simplemath编译打包好。
运行单元测试
add_test.go和sqrt_test.go是单元测试代码。可以使用“go test”命令运行代码进行单元测试。
运行结果会列出测试内容、测试结果、测试时间。