go安装以及使用gomod、 goland设置
一、 安装go
1. 官网下载go安装包,按照指引安装即可,
2. 推荐使用go1.12版本 ,它新增加了go mod用来管理依赖,并且不需要我们再刻意设置gopath环境变量
3. 默认go会将$HOME/go目录作为gopath,所有项目下载的依赖包都会存放在这个目录下,我们不用再关心它。
与python pip类似,默认pip会将HOME/.pip这个目录作为缓存目录,go会将HOME/.pip这个目录作为缓存目录,go会将HOME/go作为缓存目录,在这个目录同样可以更改,只需要在环境变量设置即可,如下:
4. 由于墙的原因,部分官方依赖无法下载,我们可以使用代理,设置如下:
linux: export GOPATH=/usr/local/gopath
export GOPROXY=https://goproxy.io
windows: 添加环境变量
GOPATH=D:\gopath
GOPROXY=https://goproxy.io
二、 使用go mod
1. 任意目录创建项目目录
mkdir /home/mygo
2. 进入到项目目录
cd /home/mygo
3. 初始化生成go.mod
文件
go mod init mygo (这里mygo名字也可以叫其他名字,一般为了与项目名称对应,就用项目名字)
4. 项目目录下会生成go.mod文件, 类似于python的requirements.txt文件。同时也生成一个go.sum文件,主要记载了下载包的哈希值用于校验,我们用不到。
5. go.mod文件一旦创建后,它的内容将会被go toolchain全面掌控。
go toolchain会在各类命令执行时,比如执行go get、go build、go run、go mod等命令时,自动修改和维护go.mod文件,这点跟pip还是有区别的
6. go.mod 提供了module
, require
、replace
和exclude
四个命令
module
语句指定包的名字(路径)require
语句指定的依赖项模块replace
语句可以替换依赖项模块exclude
语句可以忽略依赖项模块-
$ cat go.mod module mygo go 1.12 require ( github.com/labstack/echo v3.3.10+incompatible // indirect github.com/labstack/gommon v0.2.8 // indirect github.com/mattn/go-colorable v0.1.1 // indirect github.com/mattn/go-isatty v0.0.7 // indirect github.com/valyala/fasttemplate v1.0.0 // indirect golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a // indirect )
7. 可以使用命令 go list -m -u all
来检查可以升级的package,
使用go get -u need-upgrade-package
升级后会将新的依赖版本更新到go.mod文件中。
也可以使用 go get -u
升级所有依赖。
8. 由于某些已知的原因,并不是所有的package都能成功下载,比如:golang.org
下的包。
可以在 go.mod 文件中使用 replace 指令替换成github上对应的库,来下载相应的包。比如:
replace ( golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 => github.com/golang/cryptov0.0.0-20190701094942-4def268fd1a4
)
或者:
replace golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 => github.com/golang/crypto v0.0.0-20190701094942-4def268fd1a4
9. 设置goland