#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 modules時,我們直接go get
下載的套件,會預設放在%GOPATH%/src
##目錄下。
啟用go modules後,套件都會下載到%GOPATH%/pkg/mod資料夾中。
並且會帶版本號,基本上會徹底解決依賴問題。
go.mod
#文件相當於requirement.txt
文件,裡面會放一些所需的依賴套件。
我建立了一個 #gomod-demo
資料夾。
並且CMD
進入此文件夾裡面。
執行指令#go mod init gomod-demo
。
後面這個gomod-demo
#可以隨便寫,建議跟資料夾名字一樣。
成功後,資料夾下會多了一個##go.mod#文件,代表成功。
我用Goland打開這個gomod-demo 資料夾。
#
#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) }
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)
在当前文件夹下初始化一个新的 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語言Modules的詳細內容。更多資訊請關注PHP中文網其他相關文章!