概述

在实际的开发工作中,直接调用编译器进行编译和链接的场景是少而又少,因为在工程中不
会简单到只有一个源代码文件,且源文件之间会有相互的依赖关系。如果这样一个文件一个文件逐步编译,那不亚于一场灾难。 Go语言的设计者作为行业老将,自然不会忽略这一点。早期Go语言使用makefile作为临时方案,到了Go 1发布时引入了强大无比的Go命令行工具。

Go命令行工具的革命性之处在于彻底消除了工程文件的概念,完全用目录结构和包名来推
导工程结构和构建顺序。针对只有一个源文件的情况讨论工程管理看起来会比较多余,因为这可以直接用go run和go build搞定。下面我们将用一个更接近现实的虚拟项目来展示Go语言的基本工程管理方法。

测试代码

Go基础编程:工程管理_go语言

calc.go代码如下:

package calc

func Add(a, b int) int { //加
return a + b
}

func Minus(a, b int) int { //减
return a - b
}

func Multiply(a, b int) int { //乘
return a * b
}

func Divide(a, b int) int { //除
return

main.go代码如下:

package main

import (
"calc"
"fmt"
)

func main() {
a := calc.Add(1, 2)
fmt.Println("a = ", a)}

GOPATH设置

windows

Go基础编程:工程管理_makefile_02

Go基础编程:工程管理_源文件_03

Go基础编程:工程管理_工程管理_04

linux

Go基础编程:工程管理_go语言_05

编译运行程序

Go基础编程:工程管理_makefile_06

go install的使用

设置环境变量GOBIN:

Go基础编程:工程管理_工程管理_07

在源码目录,敲go install:

Go基础编程:工程管理_makefile_08