前言
在Go1.11发布之后,其中最重要的变化之一是go module.刚开始接触总是对它不知所以然,在实践的过程中,感觉搞不清楚它是干嘛的,今天看了很多文章,记录一下Go Modules的使用。
Go Module是什么?
总结来说,它是一个项目依赖解决方案。原来我们把包都放在GOPATH里面,使用类似命名空间的包路径区分包,但是这种包依赖可能会造成生产环境和测试环境出现运行不一致的问题。
Go module(也叫vgo),通过go mod文件进行管理,Go允许在$GOPATH外的任何目录下使用go.mod创建项目。顺便说一下,go module开启之后,GOPATH路径就作废了,因为就没有GOPATH了,也可以理解为你当前项目目录就是GOPATH,go mod会自动加载你项目中的所有包和依赖,没有的话自动下载,观念一定要转变过来
GO111MODULE
要使用go module,首先要设置GO111MODULE=on.
可以输入命令 go env查看一下你的配置,看看有没有开启。
ps:Go版本必须是1.11以上,我用的是1.14版本。
go env
Windows下:(可以在GOland的终端输入)
set GO111MODULE="on"
Linux下:
go env -w GO111MODULE="on"
创建一个新模块
Window下:
使用Goland的话需要在File->setting中开启Go module
新建一个项目目录,如$GOPATH/src/learnmodule,然后在该项目目录下(或者使用绝对路径)