golang的包管理工具相似于java的maven、python的pip、js的npm,能够实现依赖包的统一管理;有不少:govendor、godep、glide,挑一个本身喜欢的用吧。mac安装的话均可以使用brew Install godep/govendor/glidehtml
go的环境管理相似于python的virtualenv;用来实现多个go版本并行运行的goenv:https://bitbucket.org/ymotongpoo/goenvjava
go的包管理工具对比:https://ieevee.com/tech/2017/07/10/go-import.htmlpython
GOROOT不是必需要设置的。参见Installing to a custom location,默认go会安装在/usr/local/go下,但也容许自定义安装位置,GOROOT的目的就是告知go当前的安装位置,编译的时候从GOROOT去找SDK的system libariry。git
例如我用的是ubuntu 16.04,默认go的版本是1.6,若是我想升级为更新的版本,就须要自定义安装,因此我设置了GOROOT:export GOROOT=$HOME/go1.7.4
。github
GOPATH的目的是为了告知go,须要代码的时候,去哪里查找。注意这里的代码,包括本项目和引用外部项目的代码。GOPATH能够随着项目的不一样而从新设置。golang
GOPATH下会有3个目录:src, bin, pkg。docker
godep的使用者众多,如docker,kubernetes, coreos等go项目不少都是使用godep来管理其依赖,固然缘由多是早期也没的工具可选。shell
godep早期版本并不依赖vendor,因此对go的版本要求很松,go 1.5以前的版本也能够用,只是行为上有所不一样。在vendor推出之后,godep也改成使用vendor了。npm
godep使用很简单:当你的项目编写好了,使用GOPATH的依赖包测试ok了的时候,执行:json
$ godep save
以hcache为例,执行go save
,会作2件事:
一个Godeps.json的例子。
{ "ImportPath": "github.com/silenceshell/hcache", "GoVersion": "go1.7", "GodepVersion": "v79", "Deps": [ { "ImportPath": "github.com/tobert/pcstat", "Rev": "91a7346e5b462a61e876c0574cb1ba331a6a5ac5" }, { "ImportPath": "golang.org/x/sys/unix", "Rev": "0b25a408a50076fbbcae6b7ac0ea5fbb0b085e79" } ] }
若是要增长新的依赖包:
若是要更新依赖包:
godep还支持godep restore
,能够将vendor下的代码反向拷贝到$GOPATH下。不过我没想到这个功能在什么状况下能够用到。
正规和可信任的方式是从github上下载。golang 在 github 上创建了一个镜像库,如 https://github.com/golang/net 便是 https://golang.org/x/net 的镜像库。所以获取 golang.org/x/net 包(其余包相似),其实只须要如下步骤:
有说能够从Golang 中国下载,https://golangtc.com/packages它提供了这个服务,其实里面不过是github的连接地址
听说:https://gopm.io/download 也是一种办法
使用go get命令除了会下载指定的项目代码,还会去下载这个项目所依赖的全部项目,而且下载完会自动安装:go help get查看帮助信息
go的全部依赖包(内部和外边)都放入gopath里面
Viper是一个方便Go语言应用程序处理配置信息的库。它能够处理多种格式的配置。它支持的特性:
在构建现代应用程序时,您没必要担忧配置文件格式; 你能够专一于构建出色的软件。
Viper 能够作以下工做:
Viper读取配置信息的优先级顺序,从高到低,以下:
Viper 的配置项的key不区分大小写。
来源:https://ieevee.com/tech/2017/07/10/go-import.html
http://blog.51cto.com/13599072/2072753
https://github.com/spf13/viper