Go語言go modure的使用以及第三方包的依賴管理
Go modure介紹
go modules 是 golang 1.11 新加的特性,主要用來進行項目包的管理,在此之前其實也有其他工具,但是都有一定的不足,想了解的可以自行去查一下,本文主要介紹go mod的使用
(本文假設go相關的東西已經安裝好,包括代理GOPROXY=https://goproxy.cn,direct)
環境
通過go env可以查看自己go相關的配置,其中GO111MODULE=“on”表示使用go mod模式,此模式下不會使用$GOPATH,如果GO111MODULE!=“on”,可以通過go env -w GO111MODULE=on進行設置。
使用
此時新建一個文件夾作爲本次介紹的試驗項目,隨便放在哪都可,然後在目錄下執行go mod init projectname : projectname就是我們這個模塊名,這時我們的目錄下就會有一個go.mod文件。
然後再到此目錄下新建一個main.go文件,用來做第三包的管理測試,我所在的環境是CentOS,mac和其他linux環境應該相差無幾。
然後在文件里加入如下代碼:
package main
import (
"log"
"os"
"github.com/goinaction/code/chapter2/sample/search"
)
func init() {
log.SetOutput(os.Stdout)
}
func main() {
search.Run("prisident")
}
其中 “github.com/goinaction/code/chapter2/sample/search” 是Go語言實戰中的項目路徑,讀者可以在這裏改爲其他第三方庫均可。
在這裏,很神奇的事情就發生了,此時mod組件就會自動把這個第三方包的代碼下載到$GOPATH/pkg/mod/github.com路徑下了,這就是使用go mod的方便之處,而且,go.mod文件內容會變爲:
module firstgo
go 1.13
require github.com/goinaction/code v0.0.0-20171020164608-49fc99e6affb // indirect
這就很方便了,而且go mod 還提供很多命令方便我們進行第三方包的管理:
命令 | 說明 |
---|---|
download | download modules to local cache(下載依賴包) |
edit | edit go.mod from tools or scripts(編輯go.mod) |
graph | print module requirement graph (打印模塊依賴圖) |
verify | 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 | xplain why packages or modules are needed(解釋爲什麼需要依賴) |
具體的使用讀者可以自行進行測試