一、 安裝go
1. 官網下載go安裝包,按照指引安裝即可,
2. 推薦使用go1.12版本 ,它新增加了go mod用來管理依賴,並且不需要我們再刻意設置gopath環境變量
3. 默認go會將$HOME/go目錄作為gopath,所有項目下載的依賴包都會存放在這個目錄下,我們不用再關心它。
與python pip類似,默認pip會將$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