成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go 語言各個版本支持 Go Modules 的演進史

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

?01 介紹

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

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

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

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

02 Go Modules 演進史

Go v1.11

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

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

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

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

Go v1.13

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

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

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

go get 的變化:

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

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

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

Go v1.14

從 Go v1.14 開始,模塊被認為可以用于生產環境,并且鼓勵所有用戶從其他依賴管理系統遷移到模塊。

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

Go v1.15

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

注意:可以使用 GOPATH 環境變量設置多個目錄。

Go v1.16

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

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

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

03 總結

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

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

責任編輯:武曉燕 來源: Golang語言開發棧
相關推薦

2014-06-23 09:49:32

Go語言Android谷歌

2018-03-12 22:13:46

GO語言編程軟件

2022-04-06 08:19:13

Go語言切片

2012-10-08 09:25:59

GoGo語言開發語言

2012-03-30 14:15:50

GoogleGo

2021-02-25 15:51:41

Go語言模糊測試功能

2014-07-14 15:51:08

AndroidGO語言

2021-09-15 10:00:33

Go語言Modules

2014-07-15 11:16:17

Go語言

2023-12-30 10:22:57

Go語言函數開發

2014-10-31 09:48:36

Go語言

2021-05-29 10:20:54

GoModules語言

2022-01-10 23:54:56

GoMap并發

2022-03-13 23:51:39

Web項目Go

2018-09-20 17:30:01

2022-10-26 07:26:38

2022-02-09 16:02:26

Go 語言ArraySlice

2024-04-07 11:33:02

Go逃逸分析

2013-05-28 09:43:38

GoGo語言并發模式

2021-07-15 23:18:48

Go語言并發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产欧美一区二区三区日本久久久 | 亚洲精品综合一区二区 | 国产免费观看久久黄av片涩av | 久久高清精品 | 免费国产网站 | 91文字幕巨乱亚洲香蕉 | 久久一二区 | 日本免费黄色 | 国产精品精品3d动漫 | 国产91在线播放 | 欧美黑人一区二区三区 | 国户精品久久久久久久久久久不卡 | 国产视频福利一区 | 日韩视频在线一区 | 久久久久久av | 精品一区二区三区四区 | 久一精品| 久久手机在线视频 | 久久久精| 欧美一区二区三区在线看 | 国产日韩精品一区 | 亚洲欧美在线视频 | 国产精品国产a级 | 中文字幕视频一区 | www国产亚洲精品 | 一区二区三区在线观看视频 | 久久99国产精品 | 国产高清在线观看 | 久久高清精品 | 99久久婷婷 | 国产精品日日做人人爱 | 日本欧美国产在线 | 精品久久一区 | 久久久久久国产精品久久 | 成人在线免费电影 | 欧美成人一区二区 | 99热视| 91一区| 免费h在线 | 欧美日韩一二三区 | 成人欧美一区二区三区黑人孕妇 |