这是我参与「第五届青训营 」伴学笔记创作活动的第8天
语言进阶
(1). 依赖管理引进
Golang不同环境的依赖版本不同,同时控制依赖库的版本也是一个重要的问题,因此依赖管理就出现了,本节课介绍了三种Golang的依赖管理方式。
分别是GOPATH、Go Vendor、 Go Module。
(2). GOPATH
先介绍Go的环境变量$GOPATH的内容,GOPATH它使用绝对路径来提供项目的工作目录。工作目录包含了项目的一些内容,一般结构如下所示。
-bin 项目编译的二进制文件
-pkg 项目编译的中间产物
-src 项目源码
在Linux系统中,可以使用 export GOPATH=pwd 命令来把当前目录设置为GOPATH的值。一般情况下不使用全局GOPATH,尤其是在多项目环境中,容易发生项目GOPATH引用错误,建议使用项目级GOPATH进行依赖管理,每一个项目尽量只设置一个 GOPATH,不使用多个 GOPATH 和全局 GOPATH。
使用Goland进行开发时,在项目设置中,Global GOPATH 代表全局 GOPATH,一般来源于系统环境变量中的 GOPATH;而 Project GOPATH 代表项目所使用的 GOPATH,该设置会被保存在工作目录的 .idea 目录下,不会被设置到环境变量的 GOPATH 中,但会在编译时使用到这个目录。使用VS开发时也同理,要注意使用项目GOPATH。
在不同的系统中,安装Go后会给出一个默认的GOPATH地址,如下表格所示:
| 操作系统 | 目录格式 | 目录格式 |
|---|---|---|
| Windows | %USERPROFILE%/go | C:\Users\用户名\go |
| Unix | $HOME/go | /home/用户名/go |
将整个源码添加到版本管理工具VCS中时,只需要添加 $GOPATH/src 目录的源码即可,因为其中 bin 和 pkg 目录的内容都可以由 src 目录生成。
(3). Go Vendor
和GOPATH相比,Go Vendor 将放在 $GOPATH/src 的第三方包放到当前工程的 vendor 目录中进行管理。
它为开发者对于工程,可以独立地管理自己所依赖第三方包,多个工程独立管理第三方包,彼此之间不会相互影响。 vendor 将包共享模式转为工程独立维护模式,vendor保证了工程目录下代码的完整性,将工程代码复制到其他Go编译环境,不需要再去下载第三方包而是直接编译。