go module 介紹

go Module 是 Go 語言的一種依賴管理方式,在 Go 1.11 版本中出現的,在1.13版本前,需要顯式設置環境變量GO111MODULE的值爲on。

1.13版本以後,該環境變量被設置爲auto,在GOPATH內,GO111MODULE的值爲off,也就是使用GOPATH;
如果在GOPATH之外,或者在有go.mod文件的目錄下,則GO111MODULE的值爲on,開啓Go Module特性。

設置代理:go env -w GOPROXY=https://goproxy.cn,direct
查看配置

$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/fsj/Library/Caches/go-build"
GOENV="/Users/fsj/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/fsj/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/fsj/go"
GOPRIVATE=""
GOPROXY="https://goproxy.cn,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/fsj/workspace/sync-metadata/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/2w/tt1p_4td3yq9xlbl7c2t4jn00000gn/T/go-build597889543=/tmp/go-build -gno-record-gcc-switches -fno-common"

基本命令

download    download modules to local cache (下載依賴的module到本地cache))
edit        edit go.mod from tools or scripts (編輯go.mod文件)
graph       print module requirement graph (打印模塊依賴圖))
init        initialize new module in current directory (再當前文件夾下初始化一個新的module, 創建go.mod文件))
tidy        add missing and remove unused modules (增加丟失的module,去掉未用的module)
vendor      make vendored copy of dependencies (將依賴複製到vendor下)
verify      verify dependencies have expected content (校驗依賴)
why         explain why packages or modules are needed (解釋爲什麼需要依賴)

Use "go help mod <command>" for more information about a command.

go get 直接下載需要的包。或者go mod download可以下載所需要的依賴,
但是依賴並不是下載到$GOPATH中,而是$GOPATH/pkg/mod中,多個項目可以共享緩存的module。
裏面的mod目錄會使用@x.x.x的格式區分不同版本的代碼

$ cat go.mod 
module my-go-proj

go 1.13

require (
	github.com/go-sql-driver/mysql v1.5.0
	upper.io/db.v3 v3.7.1+incompatible
)

$ ll /Users/fsj/go/pkg/mod/github.com/go-sql-driver/  
total 0
dr-x------  45 fsj  staff   1.5K 12 30 14:45 [email protected]

參考

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