一篇文章教會你如何使用 Go 語言 Modules
前言
go moudules 是 Go 的一個包管理工具,官方提供的,還是比較靠譜的,最低 Go 版本要求 1.11+。
可以理解爲 Python 的虛擬環境,或者 Java 的 maven,PHP 的 composer。
其本質解決的問題就是包管理混亂問題。
反正就是,用就完事了,只有好事,沒有壞事。
配置 (不用管)
GO111MODULE=off # 不適用modules功能
GO111MODULE=off #使用molules功能,不會去GOPATH下找依賴包, 1.11+版本默認開啓
GO111MODULE=auto:Golang # Golang自己簡則是不是使用modules功能
根據上述命令,可以得到結論,在 1.11 + 版本中,默認就是可以使用 go modules 的,不需要做其他設置。
它和傳統的直接 go get 區別在哪
沒有使用 go modules 時,我們直接go get
下載的包,會默認放在%GOPATH%/src
目錄下。
啓用 go modules 後,包都會下載到%GOPATH%/pkg/mod
文件夾中。
並且會帶版本號,基本徹底解決依賴問題。
開始使用
創建 go.mod 文件
go.mod
文件相當於requirement.txt
文件,裏面會放一些所需要的依賴包。
開始使用
我創建了一個gomod-demo
文件夾。
並且CMD
進入此文件夾裏面。
執行命令go mod init gomod-demo
。
後面這個gomod-demo
可以隨便寫,建議和文件夾名字一樣。
成功後,文件夾下會多了一個go.mod
文件,代表成功。
我用 Goland 打開這個gomod-demo
文件夾。
go.mod 文件說明
-
module: 模塊名稱。
-
require: 依賴包列表以及版本。
-
exclude: 禁止依賴包列表 (僅在當前模塊爲主模塊時生效)。
-
replace: 替換依賴包列表 (僅在當前模塊爲主模塊時生效)。
當然,這些基本我們不需要動,都是通過命令或者 IDE 修改的。
簡單使用
比如我需要使用一個xstrings
包。
github 地址:https://github.com/huandu/xstrings
。
需要執行此命令安裝此包。
執行下載命令。
go.mod 文件會自動添加一個依賴包。
代碼:
package main
import (
"fmt"
"github.com/huandu/xstrings"
)
func main() {
s := "heheh ADSL附近"
center := xstrings.Count(s, "h")
fmt.Println(center)
}
go 連接 Mysql
github 文檔如下。
執行下載命令 go get -u github.com/go-sql-driver/mysql
go.mod 文件如下。
代碼:
package main
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"time"
)
func main() {
//s := "heheh ADSL附近"
//center := xstrings.Count(s, "h")
//fmt.Println(center)
db, err := sql.Open("mysql", "user:password@/dbname")
if err != nil {
panic(err)
}
// See "Important settings" section.
db.SetConnMaxLifetime(time.Minute * 3)
db.SetMaxOpenConns(10)
db.SetMaxIdleConns(10)
}
可能出現的異常
如果使用go get 第三方包
時,goland 無法導入,或者報錯,或者沒有Go Modules
。
在項目目錄下,使用go mod download
下載一下,基本可以解決問題,只要有Go Modules
,就代表沒問題。
如果還是沒有Go Modules
, 在 Goland 中settings->Go->GoModules(vgo)
go mod 所有命令
在當前文件夾下初始化一個新的 module,創建 go.mod 文件:go mod init name
拉取缺少的模塊,移除不用的模塊:go mod tidy
將依賴複製到 vendor 下:go mod vendor
下載依賴:go mod download
檢驗依賴:go mod verify
顯示模塊依賴圖:go mod graph
解釋爲什麼需要依賴:go mod why
編輯 go.mod 文件:go eidt
查看命令列表:go mod
查看命令幫助文檔:go help mod
總結
上述我們學習了 go mod 的如何使用。如果在操作過程中有任務問題,記得下面討論區留言,我們看到會第一時間解決問題。
我是碼農星期八,如果覺得還不錯,記得動手點贊以下哈,感謝你的觀看~
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/jFpcvzJDRmaMkarQRjLM9Q