Go语言学习2 | 青训营笔记

78 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第2天

一、本堂课重点内容

  1. go语言依赖管理

二、具体内容

go语言依赖管理

在开发项目时,想要做到从0开始的编写程序往往是比较困难的,而且会有极大的工作量。因此我们可以站在巨人的肩膀上,运用他人已经开发完善的包协助我们完成项目的开发。下面将介绍go语言依赖管理的一些模式

1.GOPATH

GOPATH是环境变量,将项目放在GOPATH/src的目录下可以进行代码的运行与存储,该运行方式较为简单原始,缺点也很明显,其缺乏对不同版本的支持,在实现工程的动态更新时可能会遇到问题。

2.govendor

Go Vendor解决了GOPATH中要求所有文件都放在GOPATH/src目录下的问题,其会创建一个vendor目录,然后将每个项目所需要的依赖都存储在vendor中,当需要调用相应的代码时,会自动从vendor包中查询相应的依赖。然而,其还是没有实现对所需依赖版本的控制,在项目更新中还是会遇到一些问题

3.Go Module

GO MODULE中所有依赖的包都存放在GOPATH/pkg/mod目录下,且有go.mod文件来应用相应目录。

module example.com/foobar

go 1.16

require(
    example.com/E1 v1.2.3
)
exclude example.com/E1 v1.2.4
replace example.com/E1 v1.2.3 =>example.com v1.2.4

require设定了一个特定的模块版本

exclude用于从使用中排除某一个模块版本

replace用于将一个模块版本替换为另一个

在用到GO Module时我们往往会用到goproxy,这是使用go实现的一个基本的负载均衡服务器,支持缓存。下载源代码时会通过GOPROXY的环境变量来设置代理地址,而不用从以前的代码库进行下载,这对我们寻找各个版本的代码包提供了便利,我们只需要先执行命令SET GOPROXY=goproxy.cn既可以正常使用了。

有了goproxy,我们可以轻松的使用go get 或者go install命令来下载我们需要的源码包