[TOC] # 全部升级 ~~~ go get -u all ~~~ # 常用 从github下载后安装到GOPATH第一个工作区的相应目录中.如果存在GOBIN,那么仅包含命令元am文件代码会装到GOBIN那 `go get -t`如果你的测试包的有附加的依赖包,`-t`可以一并下载测试包的依赖包。如果没有加这个参数,`go get`只会下载非测试包的依赖包 `go list -f`这个命令可以列出来Go的所有包,并且可以指定格式。这个写脚本的时候很有用。 下面这个命令将会打印所有依赖的`runtime`包 ~~~ go list -f ‘’ runtime [runtime/internal/atomic runtime/internal/sys unsafe] ~~~ -u: 下载并安装代码包,不论是否存在 -d: 只下载不安装 -fix: 下载代码包后先运行一个用于根据当前go版本修正代码的工具,然后再安装代码包 -t: **同时下载测试所需的代码包** -insecure: 允许通过非安全的网络协议下载,比如http **uses insecure protocol** ~~~ export url='' export project='' git config --global url."git@${url}:".insteadOf "http://${url}/" go get -v -insecure "${url}${project}" ~~~ # 下载失败问题 当我们使用`go get`、`go install`、`go mod`等命令时,会自动下载相应的包或依赖包。但由于众所周知的原因,类似于`golang.org/x/...`的包会出现下载失败的情况。如下所示: ~~~ $ go get -u golang.org/x/sysgo get golang.org/x/sys: unrecognized import path "golang.org/x/sys" (https fetch: Get https://golang.org/x/sys?go-get=1: dial tcp 216.239.37.1:443: i/o timeout) ~~~ **手动下载** 我们常见的`golang.org/x/...`包,一般在 GitHub 上都有官方的镜像仓库对应。比如`golang.org/x/text`对应`github.com/golang/text`。所以,我们可以手动下载或 clone 对应的 GitHub 仓库到指定的目录下 ~~~ mkdir $GOPATH/src/golang.org/x cd $GOPATH/src/golang.org/x git clone git@github.com:golang/text.git ~~~ **使用gopm** 使用gopm可以从golang.org的一些镜像网站上下载。 安装gopm ~~~bash go get -u github.com/gpmgo/gopm ~~~ 使用gopm安装第三方包 不加`-g`参数,会把依赖包下载`.vendor`目录下面; 加上`-g`参数,可以把依赖包下载到`GOPATH`目录中。 ~~~bash gopm get -g golang.org/x/net ~~~ **使用goproxy** Go的1.11版本以后 可以设置`GOPROXY`这个变量,来设置代理。 如果你自己有代理服务器就可以把这个环境变量设置成自己的代理。 首先开启`go module`支持: 在Mac/linux下执行: ~~~bash export GO111MODULE=on ~~~ Windows平台执行: ~~~bash SET GO111MODULE=on ~~~ 我们这里以`https://goproxy.cn`为例: 在Mac/linux下可以执行以下命令来设置: ~~~bash export GOPROXY=https://goproxy.io ~~~ Windows平台在`cmd`执行以下命令来设置: ~~~bash export GOPROXY=https://goproxy.io ~~~ 或者在`PowerShell`中执行: ~~~bash C:\> $env:GOPROXY = "https://goproxy.io" ~~~