以前的go 项目需要放在GOPATH中src中编译执行,在golang1.11之后引入了go modules特性。在go1.11之后的版本可以使用go modules管理go项目中包的依赖,也使项目脱离了GOPATH,可以放置在任意目录。
Go module的官方定义:
模块是相关Go包的集合。modules是源代码交换和版本控制的单元。go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
开启go module:
go 1.11 或更高
export GO111MODULE=on (设置环境变量)
使用go mod命令给项目添加go module:
在GOPATH之外的任意目录新建项目文件夹
打开命令终端, 在项目文件夹下执行go mod init <module name>
go mod init test
会在项目中创建go.mod文件,其中会记录所有的项目第三方包引用包括版本。go toolchain会自动管理go.mod文件,不需要手动修改。例如:在项目中使用go get 或go build命令时,会把在项目中使用的包自动添加到go.mod中。
go.mod中对应的包会下载到路径$GOPATH/pkg/mod中
打开一个已存在的go 项目,在有go.mod的目录下执行go build会自动下载go.mod中的包
pro
go env可以查看go的环境变量,例如 GOPATH
下载go的包时可能需要设置代理:
go env -w GOPROXY=https://goproxy.cn,direct
有疑问加站长微信联系(非本文作者)