Golang - 教學 tutorial

Go Module與 Go get 常用參數說明

在 Go 語言結構,可以透過 import

Go Module

Go module 可以在任意的位置進行模組管理,目前

描述
GO111MODULE=on 支持 module,需要使用 go mod,有 go.mod 才能正常運作
GO111MODULE=off 不支持 module,會從 GOPATH 或 vendor 來尋找。如果不是在 GOPATH 執行 go mod init 則會報錯。
GO111MODULE=auto 會檢查當前目錄是否啟用 go.mod,以及陸續往上層尋找,最後才會從 GOPATH 檢查。

當 module 功能開啟, package 存放的位置就會是 $GOPATH/pkg CVT2HUGO: 來導入 package,在這裡將會說明如何管理 package 經常會使用到的參數,進行說明:

Go Mod init

go module init 的語法如下

go mod init <package name>

Go Mod 常用參數

go.mod 有幾個常用參數:

參數 描述
module 指定 package name or path
require 依賴的 package
replace 取代 package 依賴位置
exclude 忽略 package

例如,如果有些 package 希望使用 local 位置,則可以使用 replace 來達成

use replace mypackage.com/happy/beer => ../beer

Go get 常用參數

通常在使用 go get 管理 package ,常會看到 -u

go get 命令通常也被稱為遠程代碼導入,可以從網路下載及安裝指定的 package 以及相關的依賴代碼,存放在 $GOPATH 的 src 目錄下。

使用 go module 時,go build 使用的 package 則儲存在 $GOPATH/pkg/mod。 CVT2HUGO: 與沒有使用 -u 的差異到底在哪裡,在這裡機會進行說明。

支持的 VCS 包括 git, mercurial, subversion, bazaar。

這裡是在下載時,可以使用的參數:

參數 描述
-d 執行下載,但不執行安裝動作。
-f 只有在使用 -u 參數時,才會有效。可以忽略檢查以下載 package 的導入路徑。如果代碼是從其他項目 fork ,就可以採取這樣的做法。
-fix 下載 package 先執行修正在進行編譯安裝。
-insecure 允許使用 http (非安全) 來下載 package,通常是在內部開發環境使用。
-t 下載 package ,在安裝過程同時下載安裝相關依賴代碼包。
-u 強制更新已經下載的 package 以及依賴代碼包。(go get 預設指會不會更新已經下載的package)

因此,從這裡基本可以了解,可以依照參數的功能決定要怎麼管理本地的 package。