以前的go 项目需要放在GOPATH中src中编译执行,在golang1.11之后引入了go modules特性。在go1.11之后的版本可以使用go modules管理go项目中包的依赖,也使项目脱离了GOPATH,可以放置在任意目录。
Go module的官方定义:
模块是相关Go包的集合。modules是源代码交换和版本控制的单元。go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
开启go module:
使用go mod命令给项目添加go module:
在GOPATH之外的任意目录新建项目文件夹
go mod init test
go.mod中对应的包会下载到路径$GOPATH/pkg/mod中
打开一个已存在的go 项目,在有go.mod的目录下执行go build会自动下载go.mod中的包
go env可以查看go的环境变量,例如 GOPATH
下载go的包时可能需要设置代理: