如题,初学 Go 语言,目前我对这两者的了解是:
-
GOPATH
是 Go 语言中旧的依赖管理模式,该模式下似乎无法对依赖的版本进行控制 - 为了解决
GOPATH
模式下的一些问题,Go 引入了vender
机制,使得 Go 寻找依赖的顺序变成了vender -> GOROOT -> GOPATH
- 为了进一步解决
GOPATH
模式下的问题,Go 引入了Module
机制,在该模式下,我们可以对依赖的版本进行控制
同时,在 Go 1.14
下并设置 GO111MODULE=off
时,项目位于 GOPATH
外好像没有影响,可以正常寻找到 GOPATH
下的依赖。
我的问题是:
- 过去,Go 项目是否必须在
GOPATH
下,如果不在GOPATH
下存在什么影响? - 现在,当
GO111MODULE
的值不同时,项目位于GOPATH
下和GOPATH
外有什么不同? -
Go Module
解决了GOPATH
模式下的什么问题?有什么区别? - 现在
Go
语言开发时,一般是怎样管理依赖的,是Go Module + vender
吗?