go module 使用教程

如果你還在使用 GOPATH 模式來開發Golang程序,那麼你可以參考本文來告別 GOPATH,並帶給你一個方便的包管理工具。

關於 go mod 的說明和簡單使用,可以參考:

1、Go1.1.1新功能module的介紹及使用請添加鏈接描述

2、Introduction to Go Modules請添加鏈接描述

3、Go 1.11 Modules 官方說明文檔請添加鏈接描述

go Modules—Modules是Go 1.11中新增的實驗性功能,是一種新型的包管理工具。
具體操作:
首先要把go升級到1.11

升級後,可以設置通過一個環境變量GO111MODULE來激活modules:

export GO111MODULE=on //此時go會使用modules,而不會去GOPATH目錄下查找。

一般默認情況是GO111MODULE=auto,此時go命令行將會根據當前目錄來決定是否啓用module功能。這種情況下可以分爲兩種情形:當前目錄在GOPATH/src之外且該目錄包含go.mod文件,或者當前文件在包含go.mod文件的目錄下面。

當GO111MODULE=off時,go命令行將不會支持module功能,尋找依賴包的方式將會沿用舊版本那種通過vendor目錄或者GOPATH模式來查找。

當module功能啓用時,GOPATH在項目構建過程中不再擔當import的角色,但它仍然存儲下載的依賴包,具體位置在$GOPATH/pkg/mod。

其次

假設有一個project命名爲 helloworld;
1.初始化mod:

go mod init helloworld

初始化後系統會生成一個go.mod文件;然後執行go build,再次查看go.mod文件發現多了一些內容(依賴包列表以及版本),同時生成go.sum文件;go.sum是一個模塊版本內容的校驗值,用來驗證當前緩存的模塊。go.sum包含了直接依賴和間接依賴的包的信息,比go.mod要多一些。
2.下載依賴

go mod download

3.常用指令

go mod init        initialize new module in current directory 在當前目錄初始化mod

go mod tidy //拉取缺少的模塊,移除不用的模塊。

go mod download //下載依賴包

go mod vendor //將依賴複製到vendor下

go mod verify //校驗依賴

go list -m -json all //依賴詳情

go mod graph //打印模塊依賴圖

go mod why //解釋爲什麼需要依賴

3.有一些包被牆了,拉不到,可以使用如下網址配置golang 的代理:

https://github.com/goproxy/goproxy.cn/blob/master/README.zh-CN.md

4.版本控制

go get 包
會默認下載最新依賴的包,並且會在go.mod裏面記錄下版本號
如果有tag,則會拉取最的tag包
若要使用某個固定commit的包
require github.com/docker/docker e7b5f7dbe98c(commit)
go.mod會自動更新爲相應 pseudo-versions的包版本
官方文檔 https://tip.golang.org/doc/go1.13#version-validation

5.備註
在dev模式需要指定 $GOPATH
依賴包會被保存到 $GOPATH/pkg下面

cd $GOPATH
ls
bin pkg src

如果有go相關工具包,會使用src下的工具包

6.問題---beego 無法自動生成文檔
beego延續以前 $GOPATH/src目錄下找項目生成api文檔的方式。
1.項目請建立在 $GOPATH/src
2.關閉go mod export GO111MODULE=off
3.執行 bee generate docs
如提示有任何第三方依賴找不到

package 'github.com/beego/i18n' does not exist in the GOPATH or vendor path

則執行go get github.com/beego/i18n將會將依賴包下載到$GOPATH/src下
執行完生成文檔命令提示如下則成功了

2020/02/27 18:44:56 SUCCESS  ▶ 0036 Docs successfully generated!

7.go.mod beego版本會強制更新
beego 版本gomod配置的是1.7.1每次go build 或者bee run 會強制更新爲1.12.0
(1)bee run使用了src的版本,由於有該分支是devlop是1.12.0
(2)bee 1.12.0使用了 “github.com/astaxie/beego/context/param”
(3)該包需要1.12.0才能使用

8.使用go version go1.13.8 更新的依賴是私有倉庫會如下報錯
verifying 410 [地址] gone
解決辦法:
export GO111MODULE=on
export GOPROXY=direct
export GOSUMDB=off

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章