这里写自定义目录标题
为什么我会用go mod
我最开始接触go mod是为了导包,我使用的编辑器是vscode,在刚开始集成环境的时候,通过go env -w GO111MODULE=on直接就将环境变量给修改了,以至于后面再使用gopath路径进行导包的时候失败,
一直报这个错误
就是直接就不找gopath,直接找的goroot
原因如下:
go module相关配置
GO111MODULE
要启用go module支持首先要设置环境变量GO111MODULE,通过它可以开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是auto。
- GO111MODULE=off禁用模块支持,编译时会从GOPATH和vendor文件夹中查找包。
- GO111MODULE=on启用模块支持,编译时会忽略GOPATH和vendor文件夹,只根据 go.mod下载依赖。
- GO111MODULE=auto,当项目在$GOPATH/src外且项目根目录有go.mod文件时,开启模块支持。
简单来说,设置GO111MODULE=on之后就可以使用go module了,以后就没有必要在GOPATH中创建项目了,并且还能够很好的管理项目依赖的第三方包信息。
使用 go module 管理依赖后会在项目根目录下生成两个文件go.mod和go.sum。
修改的话直接在终端
go env -w GO111MODULE=on
输入这些就好了。
这些东西应该用哪个已经很清楚了,然后的话就是在gomod中一些需要注意的东西,
我遇到的问题
1.go mod如何使用。
首先,我么想导包,需要在我们的项目下 go mod init “项目名”
go mod init “项目名”
在项目下会生成一个go。mod文件
这是我们编辑一个简单的调用内容
这个是被调用的,我们定义一个Age全局变量,这个Age的A必须大写,这样才能被其他包调用
这个是调用者,
这里运行之后的结果为
2.当多个mod的时候,应该选择使用哪个mod
一般出现需要选择的时候应该都是嵌套使用,这里如果说你的项目已经go mod init了,再在外面有一个mod,这时候,是直接选择使用里面的mod的。