1、關於go modules
- 1.1 go modules 是go1.11 新加的特性
如今已有go 1.13.4 了本人用了就是最新版的
- 1.2關於modules 官方定義
模塊是相關Go包的集合。modules是源代碼交換和版本控制的單元。 go命令直接支持使用modules,包括記錄和解析對其餘模塊的依賴性。modules替換舊的基於GOPATH的方法來指定在給定構建中使用哪些源文件。
- 1.3 使用modules 的配置
- 配置GO111MODULE
GO111MODULE 有三個值 off , on,auto
- 配置GO111MODULE
GO111MODULE=off,go命令行將不會支持module功能,尋找依賴包的方式將會沿用舊版本那種經過vendor目錄或者GOPATH模式來查找。 GO111MODULE=on,go命令行會使用modules,而一點也不會去GOPATH目錄下查找。 GO111MODULE=auto,默認值,go命令行將會根據當前目錄來決定是否啓用module功能。這種狀況下能夠分爲兩種情形:
- 1.4 本人配置
export GO111MODULE=auto
由於之前沒有使用 ,將來兼容之前的項目,暫設成auto
2、go mod 的一些命令
命令 | 說明 |
---|---|
download | download modules to local cache(下載依賴包) |
edit | edit go.mod from tools or scripts(編輯go.mod |
graph | print module requirement graph (打印模塊依賴圖) |
init | initialize new module in current directory(在當前目錄初始化mod) |
tidy | add missing and remove unused modules(拉取缺乏的模塊,移除不用的模塊) |
vendor | make vendored copy of dependencies(將依賴複製到vendor下) |
verify | verify dependencies have expected content (驗證依賴是否正確) |
why | explain why packages or modules are needed(解釋爲何須要依賴) |
3、如何使用 go mod
- 3.1 簡單使用
mkdir hello cd hello go mod init hello # 此時會出現一個hello下會出現一個 go.mod 目錄 # 須要下載 全部第三方包時 go mod download # 下載第三包能夠直接使用 go get need_pkg # 下載好的依賴 和 版本 會加入到 go.mod 裏面, # 下載好的第三包 會放在到$GOPATH/pkg/mod 中 # 沒有設置GOPATH的話 下載好的第三方包會放在~/go/pkg/mod # 若是你想放在當前目前能夠執行以下命令 go mod vendor # 此時你的包就會出如今vendor下了,意思是將依賴包放在vendor中
- 3.2 關於依賴升級
go list -m -u all 來檢查能夠升級的package go get -u 升級全部依賴 go get -u need-pack 升級指定的依賴
- 3.3 關於依賴打包
go build -ldflags="-s -w" -o app ./main.go # -ldflags="-s -w" 壓縮程序
- 3.4 github 拉取 他人含有go.mod的項目時,下載全部第三方包
go mod download
- 3.5 關於如何使用自定義包
hello |--conf |-conf.go |-main.go |-go.mod 如何導入conf 包呢? 先查看go.mod 中的module 後的定義的module_name 在導入時 直接使用module_name/conf 便可
4、goland的配置
goland 升級到最新的,舊的goland 版本時不支持go mod, 在preferences -> go -> Go Modules(vgo) 給Enable Go Modules (vgo) Integration 打勾勾就行
上圖的那個圈起來的地方必定要勾上, Enable Go Modules(vgo) 啓用modules 模式 verdoring mode 會使用vendor 文件夾中的包(不用打勾,打勾意味着依賴包都使用vendor 目錄裏面的.)