GO Modules的理解和遇到的問題解決方法

水墨先生發表於2021-06-25

使用的go版本是1.16.5,程式碼編輯器是GoLang2020.3.4,是在window10上面做GO Modules測試

為何會有GOModules的出現

GOROOT是指go的安裝路徑,GOPATH是指go的專案路徑,在沒有GOModules之前用的是GOPATH,由於GOPATH存在很多問題,從而使用GOModules進行代替

GOPATH存在的問題

GOPATH模式下沒有版本控制的概念,具有致命的缺陷,至少會造成以下問題的產生:
1.在執行go get的時候,你無法傳達任何的版本資訊的期望,也就是說你也無法知道自己當前更新的是哪一個版本,也無法透過指定來拉取自己所期望的具體版本
2.在執行 Go 應用程式的時候,你無法保證其它人與你所期望依賴的第三方庫是相同的版本,也就是說在專案依賴庫的管理上,你無法保證所有人的依賴版本都一致
3.你沒辦法處理v1,v2,v3,等等不同版本的引用問題,因為GOPATH模式下的匯入路徑都是一樣的,都是github.com/foo/bar。
4.Go 語言官方從 Go1.11 起開始推進 Go modules(前身vgo),Go1.13 起不再推薦使用 GOPATH 的使用模式,Go modules 也漸趨穩定,因此新專案也沒有必要繼續使用GOPATH模式。

GOModules的出現解決了哪些問題

1.Go語言長久以來的依賴管理問題
2.“淘汰”現有的GOPATH的使用模式
3.統一社群中的其它的依賴管理工具(提供遷移功能)

GOModules和GOPATH的關係

一、設定一下專案路徑
GO Modules的使用與遇到的問題與解決方式
二、開啟編輯器,專案根目錄執行以下命令

go mod init

GO Modules的使用與遇到的問題與解決方式

三、安裝第三方依賴

GO Modules的使用與遇到的問題與解決方式

GO Modules的使用與遇到的問題與解決方式

GO Modules的使用與遇到的問題與解決方式

現在可以看出GOModules和GOPATH的關係了,”go get”命令會把第三方依賴包放在GOPATH路徑下,GOModules在多人開發時為了使所有人的開發版本一致,做了版本控制,確保所有人使用的依賴都是一樣的版本,我的理解是GOModules是GOPATH的一種升級版本

GO Modules的理解和遇到的問題解決方法

最後注意一點,我使用的編輯器是GOLang,GOModules會出現如下問題,出現這個問題說明第三方依賴包是成功下載安裝的,主要是編輯器的原因造成
GO Modules的使用與遇到的問題與解決方式

以下是解決方法

GO Modules的使用與遇到的問題與解決方式

GO Modules的使用與遇到的問題與解決方式

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章