首先我们一个问题来引出这篇文章的内容
一、设置GOPATH的意义在哪?
GO语言中有三个环境变量:
可以通过这个命令进行查看
go env
GOROOT:Go语言安装的根目录
GOPATH:工作区,我们自已定义的工作文件夹
GOBIN:Go程序生成可执行文件的路径
可以把GOPATH简单理解成Go语言的工作目录,它的值就是一个目录的路径或多个目录的路径,每个目录都代表这一个工作区, 这些工作区存放着Go语言源码文件,以及安装后的归档文件和可执行文件。
二、Go语言源码组织的方式
Go语言组织源码的方式是以包为基本单位的。
代码包的名称一般与源码文件所在的目录同名,如果不同名,那么在构建,安装代码包的过程中会以代码包名称为标准。
导入其它的代码包
import "github.com/labstack/echo"
三、源码安装后的结果
源码文件通常会放在某个工作区的src
的子目录下
安装之后如果产生了归档文件,也就是.a
为扩展名的文件,就会放进该工作区的pkg
的子目录
如果产生产生了可执行文件,就可能会放在工作区的bin
子目录
现在说一下归档文件
现在有一个已经存在的代码包
github.com/labstack/echo
执行命令
go install github.com/labstack/echo
生成的归档文件目录就是
github.com/labstack/echo
上面这个目录还有另一层意思,那就是该代码包的源代码文件存放于github
网站的labstack
组的代码仓库echo
中
归档目录和pkg
之间还有一层目录,叫做平台相关目录,平台相关目录的名称是由build
的目标操作系统,下滑线和目标计算机架构的代号组成
假如现在构建某个代码包时候的目标操作系统是linux
因此上述代码就放在
pkg/linux_amd64/github.com/labstack
四、理解构建和安装Go程序的过程
说说构建和安装Go程序的过程是怎样的,以及它们的异同点
- 构建使用命令
go build
- 安装使用命令
go install
构建和安装都会执行编译和打包操作
构建
- 如果构建的是库源码文件,那么操作后产生的结果文件只会存在于临时目录中
- 如果构建的是命令源码文件,那么操作的结果文件会搬运到源码文件所在的目录中
安装操作会先执行构建,然后还会进行链接操作,并且把结果文件搬运到指定目录。
安装
- 进一步说,如果安装的是库源码文件,那么结果文件会被搬运到它所在工作区的 pkg 目录
下的某个子目录中。 - 如果安装的是命令源码文件,那么结果文件会被搬运到它所在工作区的 bin 目录中,或者
环境变量GOBIN指向的目录中。
这里你需要记住的是,构建和安装的不同之处,以及执行相应命令后得到的结果文件都会出
现在哪里。