原创:转载请标明出处:
https://blog.csdn.net/ming2316780/article/details/90370913
本文出自:【iGoogle.ink的博客】
Go mod 最简单的理解和使用
研究了一下Go mod 发现还真是挺好用的,既可以管理包的版本问题,又解决了有些包被墙无法下载的困扰
Go mod 的三种开启模式
- GO111MODULE
- on:支持Go mod模式
- off:不支持Go mod模式
- auto (默认模式):如果代码在gopath下,则自动使用gopath模式;如果代码不在gopath下,则自动使用GO mod模式。
- 开启方式:
- Windows中,在环境变量中添加变量即可,变量名为 GO111MODULE ,变量值可设置为 on、off、auto。
- Linux中,只要在 /etc/profile 中添加 export GO111MODULE=on 或 export GO111MODULE=off 或 export GO111MODULE=auto。然后执行 source /etc/profile 刷新即可。
Go mod 的使用
1、引入.mod文件
在开启Go mod 模式下,非gopath目录中的代码,执行一下命令
go mod init {项目名}
例:
$ go mod init mod_demo
go: creating new go.mod: module mod_demo
项目根目录中便会生成一个 go.mod 文件,文件中内容很简单,仅有两行代码如下:
module mod_demo
go 1.12
2、go.mod 文件的配置
go.mod 文件中用到的关键字有三个
- require:引用哪些包
- replace:替换一些包的下载和引用路径
- exclude:不下载和引用哪些包
require
一般来说,require () 是不需要自己手动去修改的,当运行代码的时候,会根据代码中用到的包自动去下载导入
replace
在我看来,replace 对于国内开发来说是个神功能,他可以将代码中使用,但国内被墙的代码替换成github上的下载路径,例如:golang.org/x/ 下的包,全都替换成github地址上的包,版本使用 latest 即可
module mod_demo
go 1.12
replace (
golang.org/x/net => github.com/golang/net latest
golang.org/x/tools => github.com/golang/tools latest
golang.org/x/crypto => github.com/golang/crypto latest
golang.org/x/sys => github.com/golang/sys latest
golang.org/x/text => github.com/golang/text latest
golang.org/x/sync => github.com/golang/sync latest
)
exclude
这个不常用,意在指定的包,在下载和引用时,排除掉。
最后,安装完 Golang 推荐的 env 更改的配置
GO111MODULE=on
GOPATH=<自己指定workspace目录\gopath>
GOSUMDB=off