博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go模块简明教程(Go语言依赖包管理工具)
阅读量:7104 次
发布时间:2019-06-28

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

Go模块是Go语言的依赖包管理工具。

Go模块的使用

1、Go1.11及以后版本才能使用。
2、Go1.11需要设置环境变量 GO111MODULE 为 on(新特性开关,按照Go语言惯例,mod首次在go1.11版本中使用,go1.12及以后版本这个设置应该不会用了)。

mod是模块英文modules的简写。

列举一些常用的命令行:

  • go help mod查看帮助。
  • go mod init <项目模块名称>初始化模块,会在项目根目录下生成 go.mod 文件。参数<项目模块名称>是非必写的,但如果你的项目还没有代码编写,这个参数能快速初始化模块。如果之前使用其它依赖管理工具(比如dep,glide等),mod会自动接管原来依赖关系。
  • go mod tidy根据go.mod文件来处理依赖关系。
  • go mod vendor将依赖包复制到项目下的 vendor 目录。建议一些使用了被墙包的话可以这么处理,方便用户快速使用命令go build -mod=vendor编译。
  • go list -m all显示依赖关系。go list -m -json all显示详细依赖关系。
  • go mod download <path@version>下载依赖。参数<path@version>是非必写的,path是包的路径,version是包的版本。
  • 其它命令可以通过go help mod来查看。

另外:

go.mod文件是文本文件,是可以自己手动编辑的。
Go模块版本控制的下载文件及信息会存储到GOPATH的pkg/mod文件夹里。
使用了Go模块,源码不一定要在GOPATH中进行。

使用示例

go.mod文件

module github.com/wuyumin/easydocrequire (    github.com/BurntSushi/toml v0.3.0    github.com/mostafah/fsync v0.0.0-20151120150823-6c37e2827238    github.com/russross/blackfriday v1.5.1)

Git建议

go.mod文件必须要提交到git仓库,但go.sum文件可以不用提交到git仓库(git忽略文件.gitignore中设置一下)。

问题解答

  • 问:启用Go模块以后,使用go get xxx时会报错提示"go: cannot find main module; see 'go help modules'",这个是怎么回事?

    答:因为没有找到go.mod文件,所以会报错。你只要在项目根目录下生成一个go.mod文件就可以了。

  • 问:如何在Go模块里使用本地依赖包?

    答:首先在项目的go.mod文件的require处添加依赖包,然后在replace处添加替换本地依赖包(路径要处理妥当)。比如:

require (    mytest v0.0.0)replace (    mytest v0.0.0 => ../mytest)

参考资料

  • 语义化版本(中文)
  • Go模块官方文档(英文)
  • Go模块命令说明(英文)

欢迎修正

此篇文章最新的更改都会在GitHub上进行。

GitHub上的原文链接
欢迎在GitHub上star本项目或通过Issues提供修正建议。

转载地址:http://nkuhl.baihongyu.com/

你可能感兴趣的文章
TCP
查看>>
软件测试教程 软件测试的执行
查看>>
windows上安装python3.7教程以及环境变量配置
查看>>
Python学习记录-2016-01-21
查看>>
#6 shell脚本见解与编程
查看>>
软件测试之自动化测试的魅力
查看>>
搭建sftp服务器并限制用户
查看>>
ZABBIX最全MYSQL自定义监控多实例mysql与主从复制状态没有之一
查看>>
使用jenkins实现持续集成
查看>>
脚本——LR处理文件上传和下载
查看>>
账号管理
查看>>
2018-11-05签到
查看>>
用友微服务事务一致性实践
查看>>
Spring Framework 5.0 入门篇
查看>>
解决ubuntu修改密码 Module is unknow报错
查看>>
Jmeter 写入文件
查看>>
H5页面阻止图片和文字被选中
查看>>
好程序员带你认识“jQuery”
查看>>
C#.NET软件项目中程序开发外包经验分享【从接包者转变为发包者】
查看>>
Dynamic Multipoint ××× (DM×××)动态多点×××
查看>>