GO -mod和​GO111MODULE设置的那些事原创

2024-06-13 10:41:52 浏览数 (1)

go -mod设置

在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

参考来源:Go Modules Reference - The Go Programming Language

0 人点赞