Golang的包经历三个阶段发展:GoPath ->vendor -> GoModule
1.Gopath:可以定义一个或者多个路径,linux上用:隔开,windows上使用“;”隔开,是一个环境路径
被用来存放Go的代码、二进制以及包,在导入包时判断路径;Gopath的目录结构是固定的src、pkg、bin
GOPATH最重要的用途,是go用来确认import路径.
go项目代码和第三方依赖包,可以配置多个,第一个是默认的包目录。当使用go get 获取第三方包时,会保存在默认的包目录
使用go env命令可以查看当前的go的配置项,或者更新env环境
2.GoRoot:Go的安装路径,存放Go二进制和标准库文件
golang在查找使用的包时,首先会在GoRoot的src路径下查找
- 如果GoROOT的src下和GoPATH的src下都有相同路径的包名称,会导致编译报错(防止第三方包与标准库重名)
3.vendor:go在1.5中引入vendor机制,并在1.6中启用,vendor机制本质是对Gopath的扩充--------就是在自己的文件夹中添加一个vendor目录,把依赖的第三方全部放到这个目录下。当代码里import包时,vendor的目录会被优先搜索。vendor是支持嵌套的。go在查找依赖时,当前目录的vendor下没有找到,会递归地往上层目录查找
4.Gomodule:
增加一个特性:版本管理