栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Go mod使用指南

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go mod使用指南

启用go mod
# 开启 MODULE
go env -w GO111MODULE=on
# 默认值为https://proxy.golang.org,direct
go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct

GO111MODULE可以设置为:off、on、auto(默认值)

  • 为off时,则不使用go mod,查找依赖包的顺序是:当前项目根目录/vendor,其次是$GOPATH/src(这是Golang1.11版本之前的用法)。
  • 为on时,则开启go mod,查找依赖包是以当前项目根目录的go.mod文件为基准,会忽略 $GOPATH 和 vendor 文件夹,只根据go.mod下载依赖。
  • 为auto或未设置,则go命令根据当前目录启用或禁用模块支持。仅当当前目录位于$GOPATH/src之外且其本身包含go.mod文件或位于包含go.mod文件的目录下时,才启用模块支持。

GOPROXY为依赖包代理地址,由于像golang.org/x这种依赖包需要翻墙才能下载,所以建议设置成国内镜像地址:
https://goproxy.cn 为国内七牛云维护的GO的镜像地址。
https://goproxy.io 为国内另一个镜像地址。

初始化go.mod

进入项目根目录(假如目录名为project1),初始化一个moudle,模块名为你的项目名,必须为英文名称,允许字母数字下划线和/,但是不能以/开头。

go mod init [模块名]

执行完后,会在当前项目根目录下创建一个go.mod文件,内容如:

module project1
go 1.13

此时还没有任何依赖包信息。

整理依赖包
go mod tidy

命令执行后,go mod会去项目文件中发现依赖包,将依赖包名单添加到go.mod文件中,自动删除那些有错误或者没有使用的依赖包。

将依赖包拷贝到项目vendor
go mod vendor

在项目完工时,我们也可以把依赖包复制到项目根目录/vendor/,以便存档,其实也可以不做这个操作,有go.mod文档就够了。

其他常用命令

清理本地依赖包

go clean -modcache

添加单个依赖包

go mod edit -require=golang.org/x/text

移除单个依赖包

go mod edit -droprequire=golang.org/x/text

验证依赖是否正确

go mod verify

校验所有依赖包的正确性

go mod verify
go.mod文档说明

go.mod文件可以通过require,replace,exclude语句来说明依赖包的管理规则:
require语句用于指定必不可少的依赖包
replace语句用于指定需要替换依赖包的地址,比如golang.org/x/text包替换成github.com/golang/text
exclude语句用于指定可以忽略依赖项模块

replace (
    cloud.google.com/go => github.com/googleapis/google-cloud-go v0.34.0
    github.com/go-tomb/tomb => gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7
    go.opencensus.io => github.com/census-instrumentation/opencensus-go v0.19.0
    go.uber.org/atomic => github.com/uber-go/atomic v1.3.2
    go.uber.org/multierr => github.com/uber-go/multierr v1.1.0
    go.uber.org/zap => github.com/uber-go/zap v1.9.1

    golang.org/x/crypto => github.com/golang/crypto v0.0.0-20181001203147-e3636079e1a4
    golang.org/x/lint => github.com/golang/lint v0.0.0-20181026193005-c67002cb31c3
    golang.org/x/net => github.com/golang/net v0.0.0-20180826012351-8a410e7b638d
    golang.org/x/oauth2 => github.com/golang/oauth2 v0.0.0-20180821212333-d2e6202438be
    golang.org/x/sync => github.com/golang/sync v0.0.0-20181108010431-42b317875d0f
    golang.org/x/sys => github.com/golang/sys v0.0.0-20181116152217-5ac8a444bdc5
    golang.org/x/text => github.com/golang/text v0.3.0
    golang.org/x/time => github.com/golang/time v0.0.0-20180412165947-fbb02b2291d2
    golang.org/x/tools => github.com/golang/tools v0.0.0-20181219222714-6e267b5cc78e
    google.golang.org/api => github.com/googleapis/google-api-go-client v0.0.0-20181220000619-583d854617af
    google.golang.org/appengine => github.com/golang/appengine v1.3.0
    google.golang.org/genproto => github.com/google/go-genproto v0.0.0-20181219182458-5a97ab628bfb
    google.golang.org/grpc => github.com/grpc/grpc-go v1.17.0
    gopkg.in/alecthomas/kingpin.v2 => github.com/alecthomas/kingpin v2.2.6+incompatible
    gopkg.in/mgo.v2 => github.com/go-mgo/mgo v0.0.0-20180705113604-9856a29383ce
    gopkg.in/vmihailenco/msgpack.v2 => github.com/vmihailenco/msgpack v2.9.1+incompatible
    gopkg.in/yaml.v2 => github.com/go-yaml/yaml v0.0.0-20181115110504-51d6538a90f8
    labix.org/v2/mgo => github.com/go-mgo/mgo v0.0.0-20160801194620-b6121c6199b7
    launchpad.net/gocheck => github.com/go-check/check v0.0.0-20180628173108-788fd7840127
)
go get的使用

查看指定包可以下载的版本

go list -m -versions github.com/gogf/gf

下载项目依赖

go get ./...

拉取最新的版本(优先择取 tag)

go get golang.org/x/text@latest

拉取 master 分支的最新 commit

go get golang.org/x/text@master

拉取 tag 为 v0.3.2 的 commit

go get golang.org/x/text@v0.3.2

拉取 hash 为 342b231 的 commit,最终会被转换为 v0.3.2:

go get golang.org/x/text@342b2e

指定版本拉取,拉取v3版本

go get github.com/smartwalle/alipay/v3

更新

go get -u
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991113.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号