go mod使用笔记
发布日期:2021-11-18 19:17:20 浏览次数:9 分类:技术文章

本文共 1476 字,大约阅读时间需要 4 分钟。

依赖管理

在go 1.11以前相,相信GOPATH一直被广大gopher所诟病。

go mod出现以后,我们不必再被GOPATH所束缚,go mod将带给你更好的依赖包管理体验。
如果你想体验能go mod,可以在GOPATH/src之外建一个项目仓库。

实战

首先在GOPATH/src 之外建项目目录 在这里插入图片描述

然后初始化gomod依赖文件

go mod init gin_tutorial
在这里插入图片描述

在这里插入图片描述

说明 go mod 初始化成功了,会在当前目录下生成一个 go.mod 文件。
包含go.mod文件的目录也被称为模块根,意味着go.mod 文件的定义了它所在的目录为一个模块。

经过上述步骤,我们已经可以进入开发了,我们在main文件中引入一个外部包:

package mainimport (	"fmt"	"github.com/beevik/etree")func main(){
doc := etree.NewDocument() fmt.Println(*doc)}

运行之后会生成一个文件go.sum,它记录所依赖的项目的版本的锁定。

在这里插入图片描述

go.sum文件内容

github.com/beevik/etree v1.1.0 h1:T0xke/WvNtMoCqgzPhkX2r4rjY3GDZFi+FjpRZY2Jbs=github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A=

此时go.mod 也多了一行内容

module tutorialgo 1.12require github.com/beevik/etree v1.1.0 // indirect

接下来在项目中创建一个子目录,并在main中引入该包的内容,需要使用包内的绝对路径

在这里插入图片描述

package mainimport (	"fmt"	"github.com/beevik/etree"	"tutorial/tools")func main(){
doc := etree.NewDocument() fmt.Println(*doc) tools.Foo()}

“tutorial/tools” 导入这个包的地方是 模块内的绝对路径,就是要从go.mod所在的目录开始。

注意:如果你使用的是GoLand,确保选项中打开了go modules选项

在这里插入图片描述

另外,如果我们想把这个项目放到GOPATH下面,不使用go mod模式,而是想使用GOPATH模式的话,,只需要把这个项目移到GOPATH环境变量包含的任意一个目录下面的src目录里,就可以启用GOPATH模式了。

GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。

GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:

  1. 当前目录在GOPATH/src之外且该目录包含go.mod文件
  2. 当前文件在包含go.mod文件的目录下面。

有时可能遇到依赖包拉不下来的问题

这里可以设置go mod的微软代理

export GOPROXY="https://athens.azurefd.net"export GO111MODULE=on

亲测可用

转载地址:https://blog.csdn.net/weixin_39172380/article/details/98946654 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:读写锁的使用场景及锁降级
下一篇:golang实现AES对称加密

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年03月30日 13时18分25秒