Loading... ## 前言 <div class="tip inlineBlock info"> 我主打Java,想接触下Go,当我执行go get -u github.com/gin-gonic/gin 的时候他是慢的如蜗牛,后来就在收到将go module源改为七牛云的,执行完go env -w GO111MODULE=on 和 go env -w GOPROXY=https://goproxy.cn,direct 后,我发现他下载的所有依赖包不在src下而全部到了GOPATH/pkg/mod目录下,经过半天的查资料科学上网等算是基本入门了go module。 </div> ## go module介绍 - go module是go官方自带的go依赖管理库,在1.13版本正式推荐使用 - go module可以将某个项目(文件夹)下的所有依赖整理成一个 go.mod 文件,里面写入了依赖的版本等 - <a style="color:red">使用go module之后我们可不用将代码放置在src下了</a> ## 开启 go module <div class="tip inlineBlock success"> 1.13版本: GO111MODULE=auto如果找到任何go.mod,即使在GOPATH内部,也将启用模块模式。 </div> <div class="tip inlineBlock success"> 1.14版本: 当显式启用模块模式(通过设置GO111MODULE=on)时,如果不存在go.mod文件,则大多数模块命令的功能将受到更多限制。 该版本下有3个-mod参数设置: 1. 当主模块包含顶级供应商目录且go.mod file指定目录go 1.14或更高目录时,go命令现在默认-mod=vendor为接受该标志的操作。 2. -mod=readonly 当go.mod文件为只读且不存在顶级供应商目录时,默认情况下设置 3. -mod cacherw go命令将默认目录中的新创建目录保留在模块高速缓存中 </div> <div class="tip inlineBlock warning"> 1.15版本: 可以使用GOMODCACHE来设置模块缓存的位置,也就是上面说的默认保存在GOPATH/pkg/mod下。 </div> ## Go PROXY go module 的目的是依赖管理,所以使用 go module 时你可以舍弃 go get 命令(但是不是禁止使用, 如果要指定包的版本或更新包可使用go get,平时没有必要使用) 1. 因为是在国内的原因,推荐使用goproxy设置详见:<button class=" btn m-b-xs btn-success btn-addon" onclick="window.open('https://github.com/goproxy/goproxy.cn/blob/master/README.zh-CN.md','_blank')"><i class="fa fa-paper-plane"></i>Goproxy 中国</button> 2. 下面还有阿里云的代理仓库: ```bash export GOPROXY=https://mirrors.aliyun.com/goproxy/ ``` ## 开始使用go module 项目第一次使用go module(空白项目) - 进入项目文件夹(我这里的项目名称为test) - 初始化module ```bash go mod init test ``` <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-efe05cd8637d590b71e343cfe7dece4084" aria-expanded="true"><div class="accordion-toggle"><span style="">图片展示</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-efe05cd8637d590b71e343cfe7dece4084" class="collapse collapse-content"><p></p><img src="https://cdn.ganboy.club/blog_static/images/2020-12/1.png"/><p></p></div></div></div> - 在项目下创建main.go(方然其他的也可以)import 项目依赖包 ```go import "github.com/gin-gonic/gin" ``` <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-43fd1531604e509d4bf8ecc8bd26ed4b18" aria-expanded="true"><div class="accordion-toggle"><span style="">图片展示</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-43fd1531604e509d4bf8ecc8bd26ed4b18" class="collapse collapse-content"><p></p><img src="https://cdn.ganboy.club/blog_static/images/2020-12/4.png"><p></p></div></div></div> - 检测依赖(执行完以下命令后可以发现多了个go.sum文件,go.mod加入了依赖链接,可自行查阅。) ```bash go mod tidy ``` - 下载依赖 ```bash go mod download ``` - 导入依赖 ```bash go mod vendor ``` <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-00153930d0799d877fa12e2e259fdc0f76" aria-expanded="true"><div class="accordion-toggle"><span style="">图片展示</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-00153930d0799d877fa12e2e259fdc0f76" class="collapse collapse-content"><p></p><img src="https://cdn.ganboy.club/blog_static/images/2020-12/5.png"><p></p></div></div></div> - 编写代码试试是否可用 ![][4] ```go package main import ( "fmt" "github.com/gin-gonic/gin" "log" ) func main() { engine := gin.Default() engine.GET("/hello", func(context *gin.Context) { fmt.Println(context.FullPath()) _, _ = context.Writer.Write([]byte("Hello ,gin\n")) }) if err := engine.Run(); err != nil { log.Fatal(err.Error()) } } ``` ![][5] <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-446a1f890fe0b2c61c62d70da3a4ed1490" aria-expanded="true"><div class="accordion-toggle"><span style="">图片展示</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-446a1f890fe0b2c61c62d70da3a4ed1490" class="collapse collapse-content"><p></p><img src="https://cdn.ganboy.club/blog_static/images/2020-12/7.png"><p></p></div></div></div> [1]: https://cdn.ganhua.work/blog_static/images/2020-12/1.png [2]: https://cdn.ganhua.work/blog_static/images/2020-12/4.png [3]: https://cdn.ganhua.work/blog_static/images/2020-12/5.png [4]: https://cdn.ganhua.work/blog_static/images/2020-12/2.png [5]: https://cdn.ganhua.work/blog_static/images/2020-12/6.png [6]: https://cdn.ganhua.work/blog_static/images/2020-12/7.png 最后修改:2021 年 10 月 18 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 社会很单纯~复杂滴是人呐~谁能在乎我呀