在vscode的IDE的settings.json文件可以设置-mod的内容:
具体样例如下:
"go.toolsEnvVars": { "GOFLAGS": "-mod=mod" },
//上面设置意味着在VSCode的IDE中,不论是代码跳转还是编译运行都生效-mod=mod的设置
其中,-mod有几个枚举方式:
1.-mod=mod:意味着,忽略vendor文件夹,且对代码引用的(import)库列表自动更新到go.mod文件中,适用于带网络的研发环境调试编译
如果需要go.mod对应的库内容,经过go mod tidy命令后,引用的内容(即go.mod)会下载到Gopath目录下(即module cache目录下),同时也会删除多余的引用的内容, 确保 go.mod
文件与模块中的源代码匹配。
在gopls(VSCode的IDE的用于代码解析和调转插件)的作用下,点击引用的方法,可以直接跳转到gopath文件夹下的源码
使用go get 安装新的包只能在-mod=mod的情况下
2.-mod=vendor:意味着,直接引用(import)当前目录下vendor文件夹的内容,而不用Gopath目录下(即module cache目录下)的内容,可以理解为完全的本地编译,无需网络依赖,适用于真实项目的编译使用
如果需要更新vendor的库内容,有两种方式,一种直接手动更新vendor的内容,另一种是go mod vendor更新内容,第二种会将当前目录下vendor目录直接删除,重新下载,所以如果要修改内容,就不用go mod vendor命令
在gopls(VSCode的IDE的用于代码解析和调转插件)的作用下,点击引用的方法,可以直接跳转到vendor文件夹下的源码
不能使用go get命令
3.-mod=readonly:意味着,忽略vendor文件夹,提示代码引用的(import)库列表与go.mod文件中的内容不符,与-mod=mod的区别是不更新go.mod的内容,其他的与-mod=mod一致
4.默认使用清拉营:如果在go.mod设置了go版本,且go版本大于1.14(含),且vendor文件存在,则相当于设置成了-mod=vendor,否则则设置成了-mod=readonly