Go Mod(三)如何使用模块

如何使用模块

如果安装并支持模块

如果需要使用模块,有以下两种方式(个人推荐方式一)

当你完成安装后,你有一下两种方式启用模块支持

  • $GOPATH/src树之外的目录中调用go命令,并在当前目录或其任何父目录中使用有效的go.mod文件,并且未设置环境变量GO111MODULE(或将其显式设置为auto)。
  • 在设置了环境变量的GO111MODULE=on调用go命令。
如何声明一个模块

为一个已经存在的项目创建一个go.mod文件:

  1. 进入到项目根目录

    $ cd <project path>
    

    如果是GOPATH路径外,你不需要用GO111MOUDLE显式激活。

    如果你想要在GOPATH路径内使用:

    $ # for linux or mac
    $ export GO111MOUDLE=on
    $ cd $GOPATH/src/<project path>
    
  2. 对项目进行模块初始化,并将信息写入go.mod

    $ go mod init
    

    这一步将会创建go.mod并将模块信息写入,同时如果目录存在其他类型的模块管理工具,将会自动匹配并以require指令导入到go.mod文件中。
    共支持9种依赖引用格式:

    1. GLOCKFILE
    2. Godeps/Godeps.json
    3. Gopkg.lock
    4. dependencies.tsv
    5. glide.lock
    6. vendor.conf
    7. vendor.yaml
    8. vendor/manifest
    9. vendor/vendor.json

    有关此部分的详细信息请查看:Go-模块转换

    值得注意的是,如果你引用了v2+的模块,或者正在构建、初始化这类模块,需要在go mod init指令运行之后,手动编辑go.mod、Go文件,引用指定的模块路径。
    可以参考语义版本控制进行修正。
    即使已经从其他以来管理工中转换过来了。
    直到你成功运行go build指令后,你才可以使用go tidy指令。

  3. 正常操作希望操作的指令即可

    1. go build ./...
    2. go test ./...
    3. go test all
如何升级或降级依赖版本

日常的升级、降级操作通过指令go get自动更新go.mod文件来实现,当然,你可以选择直接编辑go.mod文件。

Go指令go buildgo test 甚至 go list也会将必要的依赖引入进来(更新go.mod文件,同时下载需要的依赖)。

将指定依赖升级到最高可用版本:

$ go get example.com/package

更新某个依赖项以及他的依赖到最新可用版本

$ go get -u example.com/package

查看所有依赖(直接或间接)的minorpatch的最高可用信息。

$ go list -u -m all

查看所有直接引用的模块的minorpatch版本信息

$ go list -u -f '{{if (and (not (or .Main .Indirect)) .Update)}}{{.Path}}: {{.Version}} -> {{.Update.Version}}{{end}}' -m all 2> /dev/null

go list -u -f 为格式化输出,-f后面跟上格式化方式,支持基本布尔运算。
这句话理解起来有些难度,用处不是特别大,比如你想查找所有的目录,可以使用:

$ go list -f {{.Dir}}

加上直接依赖

$ go list -f {{if (or .Main .Indirect)}}

后面的指令可以类推

更多详细的信息可以查看

$ go help list

在当前模块内,将所有直接或间接依赖升级到最新最新可用版本,在根目录运行:

$ go get -u ./...

$ go get -u=patch

升级指定包

$ go get foo

$ go get -u foo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值