go-go module

什麼是 Go Modules

Go 1.11 和 Go 1.12 包含了初步的 Go Modules 支持,且計劃在 2019 年 8 月發佈的 Go 1.13 會在所有開發過程中默認使用 Go Modules。

Go Modules 是爲了提升使用其他開發者代碼,即添加**依賴項(模塊、包)**時的體驗,也是爲了讓代碼的正確性、安全性得到保障。並且 Go Modules 可以使用 GOPROXY 環境變量來解決中國大陸無法使用 go get 的問題。

Go Modules 在 Go 1.11 及 Go 1.12 中有三個模式,根據環境變量 GO111MODULE 定義:

  • 默認模式(未設置該環境變量或 GO111MODULE=auto):Go 命令行工具在同時滿足以下兩個條件時使用 Go Modules:

    當前目錄不在 GOPATH/src/ 下;
    在當前目錄或上層目錄中存在 go.mod 文件。

  • GOPATH 模式(GO111MODULE=off):Go 命令行工具從不使用 Go Modules。相反,它查找 vendor 目錄和 GOPATH 以查找依賴項。

  • Go Modules 模式(GO111MODULE=on):Go 命令行工具只使用 Go Modules,從不諮詢 GOPATH。GOPATH 不再作爲導入目錄,但它仍然存儲下載的依賴項(GOPATH/pkg/mod/)和已安裝的命令(GOPATH/bin/),只移除了 GOPATH/src/

Go 1.13 默認使用 Go Modules 模式,所以以上內容在 Go 1.13 發佈並在生產環境中使用後都可以忽略。

總結:意思 就是 新版本默認使用Go Modules 模式, src 源碼路徑可以放置到任何地方,不受限於GOPATH目錄。

與 GoLand 集成

在這裏插入圖片描述

Go mod 使用記錄

初始化項目
使用 go mod init 初始化一個 go.mod 文件

go mod init

找到項目依賴(整理依賴包)
使用 go mod tidy 找到項目依賴,並寫入到 go.mod

go mod tidy

如果想緩存到vendor目錄

go mod vendor

更新已有包版本
如果我們想要更新一個已在 go.mod 文件列出的包,可以使用 go get -u PKG_PATH
如,要更新 github.com/gookit/filter 到最新版本:

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