工程管理概述
在上一篇教程中,学院君带着大家搭建起了本地开发环境,并且编写了第一个 Go 程序,向世界问好。不过在实际开发过程中,直接调用编译器进行编译和链接(调用 go build
或 go run
命令)的场景很少,因为在项目工程中不会简单到只有一个源文件,往往有很多源文件并且源文件之间会有相互依赖的关系,如果这样一个文件一个文件逐步编译,那简直无法想象。
Go 语言的设计者作为行业老将,自然不会忽略这一点。说到这里,我们来看看 Go 语言的主要设计者都是何方神圣:
个顶个的都是大神级人物。早期 Go 语言使用 makefile
作为临时方案,到了 Go 1 发布时引入了强大无比的 Go 命令行工具,Go 命令行工具彻底消除了工程文件的概念,完全用目录结构和包名来推导工程结构和构建顺序。想想 C 语言编译、链接和安装可执行程序的繁琐步骤,首先要通过 configure
脚本对特定平台进行检测,比如是否包含 GCC 等编译工具,然后生成 Makefile 文件,该文件定义了编译、链接规则,为下一步编译工作做准备,接下来就是执行 make
命令进行编译工作,最后再执行 make install
命令完成应用程序的安装,经历过这些步骤才可以实现将 C 程序源代码编译为可执行程序。
与之相比,Go 语言则要简单的多,针对只有一个源文件的情况(如上篇教程所示),引入工程管理看起来比较多余,因为直接用 go run
和 go build
搞定,下面我们通过 Go 语言构建一个简单的计算器项目来演示 Go 语言的基本工程管理方法。
编写计算器工程源码
我们假设这个工程被划分为两个部分:
可执行程序,名为
calc
,内部只包含一个calc.go
文件,该文件是计算器程序的入口文件;算法库,