go mod 解决 Go 语言的包依赖问题

转:https://testerhome.com/topics/16980

https://testerhome.com/

go mod 解决 Go 语言的包依赖问题

codeskyblue · 回复于 2018年11月23日 · 2695 次阅读

受众

学习过Go的人,入门即可

go mod命令

随着Go 1.11的发布,go开始支持mod子命令

这个命令解决了Go依赖更新的问题。刚开始学起来有一点难度,不过学会了之后,会发现这玩意比原来的 vendor好太多。

官方还专门弄了一个https://goproxy.io网站,专门方便我们这些国内的用户。

先看下自带的帮助。

$ go mod


Go mod provides access to operations on modules.


Note that support for modules is built into all the go commands,


not just 'go mod'. For example, day-to-day adding, removing, upgrading,


and downgrading of dependencies should be done using 'go get'.


See 'go help modules' for an overview of module functionality.


Usage:


go mod <command> [arguments]


The commands are:


download download modules to local cache


edit edit go.mod from tools or scripts


graph print module requirement graph


init initialize new module in current directory


tidy add missing and remove unused modules


vendor make vendored copy of dependencies


verify verify dependencies have expected content


why explain why packages or modules are needed


Use "go help mod <command>" for more information about a command.


想学好go mod命令,推荐3篇文章,阅读顺序有先后。

  1. https://roberto.selbach.ca/intro-to-go-modules/

    这是Roberto Selbach大神写的这篇 Step by step的 go mod入门文章,非常好理解

  2. https://github.com/golang/go/wiki/Modules

    go mod的官方文档,想了解的多一点最好还是通读一下

  3. https://roberto.selbach.ca/go-proxies/

    最后还有一篇介绍GOPROXY的文章,比较适合对go mod熟悉之后再看

使用感受

感觉go mod应该是受了 npm 的package.json 启发,总体而言比过去的vendor好了很多,但是如果要修改依赖库,还需要再重新发布个版本,感觉调试起来不是很方便。