内容简介:用惯了dep,突然换到首先我们执行一下看看有什么效果:翻译一下:
用惯了dep,突然换到 go mod
,真是不习惯。
首先我们执行一下看看有什么效果:
$ 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 download
下载模块到本地缓存,缓存路径是$GOPATH/pkg/mod/cache
-
go mod edit
是提供了命令版编辑go.mod
的功能,例如go mod edit -fmt go.mod
会格式化go.mod
-
go mod graph
把模块之间的依赖图显示出来 -
go mod init
初始化模块(例如把原本dep管理的依赖关系转换过来) -
go mod tidy
增加缺失的包,移除没用的包 -
go mod vendor
把依赖拷贝到vendor/
目录下 -
go mod verify
确认依赖关系 -
go mod why
解释为什么需要包和模块
注意有几个坑的地方:
-
go mod
命令在$GOPATH
里默认是执行不了的,因为GO111MODULE
的默认值是auto
。默认在$GOPATH
里是不会执行, 如果一定要强制执行,就设置环境变量为on
。 -
go mod init
在没有文件的时候是执行不了的,有文件也执行不了。除非在main.go
里加上导入声明,例如
$ cat main.go package main func main() { println("Hello world") } $ go mod init go: cannot determine module path for source directory /Users/jiajun/hello (outside GOPATH, no import comments) $ vim go.mod $ cat go.mod module github.com/jiajunhuang/hello $ go mod init go mod init: go.mod already exists $ rm go.mod $ vim main.go $ cat main.go package main // import "github.com/jiajunhuang/hello" func main() { println("Hello world") } $ go mod init go: creating new go.mod: module github.com/jiajunhuang/hello $ ls go.mod main.go $ cat go.mod module github.com/jiajunhuang/hello
当然,如果在已有代码的仓库里执行是不存在这个问题的。
go mod
和 dep
比较
-
go mod
支持代理,以后就可以使用私有镜像源了~,具体请搜索GOPROXY
-
go mod
速度比dep
快很多 -
go.mod
中列出了所有的依赖,这一点其实我不是很喜欢,因为当项目一大,历史一久,只要升级其中一个依赖,很可能整个依赖 就挂了。我还是比较喜欢只要列出顶级依赖,由程序处理子依赖的情况。
一个生成的 go.mod
的示例
module github.com/my/module/v3 // 这是你的包的声明 // require 里是依赖。需要带上路径和版本。 require ( github.com/some/dependency v1.2.3 github.com/another/dependency v0.1.0 github.com/additional/dependency/v4 v4.0.0 )
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
《10%创业家》
[美] 帕特里克•J.麦金尼斯 / 李文远 / 广东人民出版社 / 2017-4 / 45.00
还在打工和创业之间苦苦挣扎吗?麦金尼斯用亲身经历告诉你,不用辞职,只需投入10%的时间和资源,就能获得100%的财务自由。你不需要雄厚的资本,也不必占用工作时间,只要准确掌握本书所授的方法,就能立即开始创业。 麦金尼斯是世界银行风投顾问,同时也是一名10%创业家。在本书中,他结合自身的创业咨询经历,为读者讲解了移动互联时代的5种创业模式,还提供了创业基因测试、10%创业计划、自传模板等个性化......一起来看看 《《10%创业家》》 这本书的介绍吧!