我刚开始接触golang的时候,曾以为go get == git clone,后来发现,是我想的太简单了。
按照官方的说法,go get借助代码管理工具(例如:git,svn,hg等等)从远程拉取代码和依赖包,并且自动完成编译和安装。
可以这么理解,go get获取代码到本地的时候编译器会通览一遍代码,得出需要哪些依赖包。如果本地没有这些依赖包,会从远程拉取这些依赖包到本地。然后完成编译。
go get 命令目前支持的有BitBucket、GitHub、Google Code 和 Launchpad。 go 工具会自动根据不同的域名调用不同的代码管理工具。
对应关系如下:
BitBucket (Mercurial Git)
GitHub (Git)
Google Code Project Hosting (Git, Mercurial, Subversion)
Launchpad (Bazaar)
附:go get 选项
-d 只下载不安装
-f 只有在你包含了 -u 参数的时候才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用
-fix 在获取源码之后先运行fix,然后再去做其他的事情
-t 同时也下载需要为运行测试所需要的包
-u 强制使用网络去更新包和它的依赖包
-v 显示执行的命令
有疑问加站长微信联系(非本文作者)