# go get命令详解

介绍

go get 命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装。整个过程就像安装一个 App 一样简单。 这个命令可以动态获取远程代码包,目前支持的有 BitBucket、GitHub、Google Code 和 Launchpad。在使用 go get 命令前,需要安装与远程包匹配的代码管理工具,如 Git、SVN、HG 等,参数中需要提供一个包名

# 语法说明

下载导入路径指定的包及其依赖项,然后安装命名包,即执行go install命令。 用法如下:

# go get

go get [-d] [-f] [-t] [-u] [-fix] [-insecure] [build flags] [packages]
1
参数 描述
-d 让命令程序只执行下载动作,而不执行安装动作。
-f 仅在使用-u标记时才有效。该标记会让命令程序忽略掉对已下载代码包的导入路径的检查。如果下载并安装的代码包所属的项目是你从别人那里Fork过来的,那么这样做就尤为重要了。
-fix 让命令程序在下载代码包后先执行修正动作,而后再进行编译和安装。
-insecure 允许命令程序使用非安全的scheme(如HTTP)去下载指定的代码包。如果你用的代码仓库(如公司内部的Gitlab)没有HTTPS支持,可以添加此标记。请在确定安全的情况下使用它。
-t 让命令程序同时下载并安装指定的代码包中的测试源码文件中依赖的代码包。
-u 让命令利用网络来更新已有代码包及其依赖包。默认情况下,该命令只会从网络上下载本地不存在的代码包,而不会更新已有的代码包。
-v 打印出被构建的代码包的名字
-x 打印出用到的命令

# go install

go build命令比较相似,go build命令会编译包及其依赖,生成的文件存放在当前目录下。而且go build只对main包有效,其他包不起作用。而go install对于非main包会生成静态文件放在$GOPATH/pkg目录下,文件扩展名为a。 如果为main包,则会在$GOPATH/bin下生成一个和给定包名相同的可执行二进制文件。具体语法如下:

go install [-i] [build flags] [packages]
1