Golang进阶(二) | 青训营笔记

95 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第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%/goC:\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编译环境,不需要再去下载第三方包而是直接编译。