下面golang教程欄目給大家介紹關(guān)于GO Modules的理解和遇到的問題。
使用的go版本是1.16.5,代碼編輯器是GoLang2020.3.4,是在window10上面做GO Modules測(cè)試
為何會(huì)有GOModules的出現(xiàn)
GOROOT是指go的安裝路徑,GOPATH是指go的項(xiàng)目路徑,在沒有GOModules之前用的是GOPATH,由于GOPATH存在很多問題,從而使用GOModules進(jìn)行代替
GOPATH存在的問題
GOPATH模式下沒有版本控制的概念,具有致命的缺陷,至少會(huì)造成以下問題的產(chǎn)生:
1.在執(zhí)行g(shù)o get的時(shí)候,你無法傳達(dá)任何的版本信息的期望,也就是說你也無法知道自己當(dāng)前更新的是哪一個(gè)版本,也無法通過指定來拉取自己所期望的具體版本
2.在運(yùn)行 Go 應(yīng)用程序的時(shí)候,你無法保證其它人與你所期望依賴的第三方庫(kù)是相同的版本,也就是說在項(xiàng)目依賴庫(kù)的管理上,你無法保證所有人的依賴版本都一致
3.你沒辦法處理v1,v2,v3,等等不同版本的引用問題,因?yàn)镚OPATH模式下的導(dǎo)入路徑都是一樣的,都是github.com/foo/bar。
4.Go 語言官方從 Go1.11 起開始推進(jìn) Go modules(前身vgo),Go1.13 起不再推薦使用 GOPATH 的使用模式,Go modules 也漸趨穩(wěn)定,因此新項(xiàng)目也沒有必要繼續(xù)使用GOPATH模式。
GOModules的出現(xiàn)解決了哪些問題
1.Go語言長(zhǎng)久以來的依賴管理問題
2.“淘汰”現(xiàn)有的GOPATH的使用模式
3.統(tǒng)一社區(qū)中的其它的依賴管理工具(提供遷移功能)
GOModules和GOPATH的關(guān)系
一、設(shè)置一下項(xiàng)目路徑
二、打開編輯器,項(xiàng)目根目錄運(yùn)行以下命令
go mod init
三、安裝第三方依賴
現(xiàn)在可以看出GOModules和GOPATH的關(guān)系了,”go get”命令會(huì)把第三方依賴包放在GOPATH路徑下,GOModules在多人開發(fā)時(shí)為了使所有人的開發(fā)版本一致,做了版本控制,確保所有人使用的依賴都是一樣的版本,我的理解是GOModules是GOPATH的一種升級(jí)版本
最后注意一點(diǎn),我使用的編輯器是GOLang,GOModules會(huì)出現(xiàn)如下問題,出現(xiàn)這個(gè)問題說明第三方依賴包是成功下載安裝的,主要是編輯器的原因造成
以下是解決方法