日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Go語言各個版本支持GoModules的演進史

?01 介紹

Go 語言在 v1.11 開始支持 Modules,本文我們介紹一下 Go 語言各個版本支持 Go Modules 的演進史。

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供遼中網(wǎng)站建設(shè)、遼中做網(wǎng)站、遼中網(wǎng)站設(shè)計、遼中網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、遼中企業(yè)網(wǎng)站模板建站服務(wù),十余年遼中做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

在之前的文章中,我們介紹過 Go Modules 的詳細(xì)使用方式,本文不再贅述,感興趣的讀者朋友們請查閱歷史文章。

使用 Go Modules 模式,一般分為以下幾個流程:

  1. go mod init? 創(chuàng)建一個新模塊,初始化 go.mod 文件。
  2. go build、go test、go run、go install? 等構(gòu)建命令,向 go.mod 文件中添加模塊所需的依賴項。
  3. go list -m -json all 打印當(dāng)前模塊的依賴項。
  4. go get 添加依賴項,或修改依賴項版本。
  5. go mod tidy 刪除未使用的依賴項。

02 Go Modules 演進史

Go v1.11

從 Go v1.11 開始支持 Go Moduls。

為了兼容使用 Go v1.11 之前的任意版本的項目,當(dāng)設(shè)置 GO111MODULE=auto? 或 GO111MODULE=off? 時,Go v1.11 在 $GOPATH/src? 中,繼續(xù)使用 GOPATH 模式。

當(dāng)設(shè)置 GO111MODULE=auto? 時,其它任意位置,如果當(dāng)前目錄或父目錄包含 go.mod? 文件,則使用 Modules 模式。

注意:GO111MODULE? 包含三個模式,分別是 auto、on 和 off,其中默認(rèn)值是 auto,即不顯式設(shè)置 GO111MODULE 的值,默認(rèn)是 auto 模式。

Go v1.13

在 Go v1.13? 中,Go Modules 發(fā)生一些變化:

當(dāng)設(shè)置 GO111MODULE=auto? 時,如果在任意位置找到 go.mod? 文件,則使用 Go Modules? 模式,即使在 $GOPATH/src 中。

注意:在 Go v1.13? 之前,即使 GO111MODULE=auto?,在 $GOPATH/src? 目錄中也不會啟動 Go Modules 模式。

go get 的變化:

go get -u (不包含任何參數(shù)),現(xiàn)在只升級當(dāng)前包的直接和間接依賴,并且不再檢查整個模塊。

go get -u ./... 從模塊根升級模塊的所有直接和間接依賴項,現(xiàn)在排除測試依賴項。

go get -u -t ./... 從模塊根升級模塊的所有直接和間接依賴項,而且還會升級測試依賴項。

Go v1.14

從 Go v1.14 開始,模塊被認(rèn)為可以用于生產(chǎn)環(huán)境,并且鼓勵所有用戶從其他依賴管理系統(tǒng)遷移到模塊。

當(dāng)主模塊包含一個頂級 vendor? 目錄,并且它的 go.mod? 文件指定 go 1.14? 或更高版本時,對于支持 -mod=vendor? 的 go? 命令,將默認(rèn)添加 -mod=vendor。

Go v1.15

模塊緩存的位置現(xiàn)在可以使用 GOMODCACHE? 環(huán)境變量進行設(shè)置。GOMODCACHE? 的默認(rèn)值是 GOPATH[0]/pkg/mod?,這也是不支持使用 GOMODCACHE 環(huán)境變量進行設(shè)置之前的模塊緩存的位置。

注意:可以使用 GOPATH 環(huán)境變量設(shè)置多個目錄。

Go v1.16

模塊模式(GO111MODULE=on?)默認(rèn)開啟,也就是說默認(rèn)啟用 Go Modules? 模式,如果用戶想要使用 GOPATH? 模式,需要顯式設(shè)置 GO111MODULE=off? 或 GO111MODULE=auto?(并且需要在 $GOPATH/src 目錄)。

使用 go install pkg@version? 替換 go get pkg@version 全局安裝包和可執(zhí)行文件。

注意:在 Modules? 模式 go get? 不再用于構(gòu)建或安裝包,而是專門用于調(diào)整 go.mod? 中的依賴項,如果在模塊外執(zhí)行 go get? 將會報錯,因為沒有可更新的 go.mod? 文件;在 GOPATH? 模式(GO111MODULE=off?) go get 仍然構(gòu)建和安裝包。

03 總結(jié)

本文我們介紹 Go Modules 模式在 Go 語言各個版本中的演進史,限于篇幅,僅介紹的在使用時常用操作的變化,我們最后做一下總結(jié):

從 Go v1.11?  開始支持 Go Modules? 模式,Go v1.13? 在(包含 $GOPATH/src? )任意目錄找到 go.mod? 文件,都開啟 Go Modules? 模式, Go v1.14? 推薦在生產(chǎn)環(huán)境使用,Go v1.16? 默認(rèn)開啟 Go Modules 模式。


當(dāng)前名稱:Go語言各個版本支持GoModules的演進史
本文鏈接:http://m.5511xx.com/article/copdhce.html