亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang依賴管理之mod的示例分析

發布時間:2021-04-09 10:35:09 來源:億速云 閱讀:222 作者:小新 欄目:編程語言

這篇文章主要介紹了golang依賴管理之mod的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

golang 依賴管理之 mod

go 很早就考慮了依賴管理的問題,內置 go get 命令,可以直接獲取對應的依賴,非常方便,但是有一個巨大的缺陷,沒有版本的維護和管理,而版本不一致可能會導致各種兼容性問題,因此出現了很多第三方依賴管理工具,depglide 就是其中的佼佼者,到了 go 1.11 官方終于推出了自己的依賴管理工具 mod,并內置在 go 版本中,go mod 使用簡單,功能強大,并且能自動兼容大多數之前的第三方工具,大量優秀的開源庫都已經切換到了 go mod,大有一統江湖之勢

GO111MODULE

一個最大的變化是 golang 的項目終于不再依賴 $GOPATH 目錄了,之前的項目由于 import 機制問題,所有項目都位于 $GOPATH/src 目錄下,雖然也沒有太大的問題,但總是讓人感覺很怪,go 1.11 終于調整了這個問題,將代碼從 $GOPATH 中遷出了,為了兼容之前研發模式,也仍然支持放到 $GOPATH 下,通過 GO111MODULE 環境變量控制

  • GO111MODULE=off: 關閉 mod,查找 vendor 目錄和 $GOPATH 路徑下的依賴

  • GO111MODULE=on: 開啟 mod, 僅根據 go.mod 下載和查找依賴

  • GO111MODULE=auto: 默認值,在非 $GOPATH 路徑并且包含 go.mod 的項目中才開啟 mod

主要命令

go mod init     # 在新的 go 項目中執行,自動分析依賴,創建 go.sum
go mod tidy     # 自動分析依賴,并自動添加和刪除依賴
go mod vendor   # 創建 vendor 目錄,將依賴拷貝到當前的 vendor 文件夾下
go mod download # 手動下載依賴
  1. 對于一個新的 go 項目,只需要新建項目的時候執行一下 go mod init

  2. 之后每次庫更新,只需要先在代碼中 import 對應庫,然后執行 go mod tidy 即可(也可用 go mod download 手動下載)

庫版本更換

手動修改 go.mod 文件中的 require 字段,重新執行 go mod tidy 即可

require (
    github.com/gin-gonic/gin v1.4.0
)

golang 的版本使用以 v 開頭的三位版本號,其中第一位表示有重大本本的更新,當發布一個 v2+ 版本的庫時,module my-module 應該改為 module my-module/v2,否則引入該庫需要在增加 +incompatible 后綴

require (
    github.com/lestrrat-go/file-rotatelogs v2.2.0+incompatible
)

解決 GFW 問題

因為一些原因,國內的網絡訪問不到 golang.org 上的庫,好在大部分庫在 github 上都有鏡像,可以用 replace 命令設置鏡像,下面是我碰到的一些庫

replace (
    cloud.google.com/go => github.com/googleapis/google-cloud-go v0.0.0-20190603211518-c8433c9aaceb
    go.etcd.io/bbolt => github.com/etcd-io/bbolt v1.3.4-0.20191001164932-6e135e5d7e3d
    go.uber.org/atomic => github.com/uber-go/atomic v1.4.1-0.20190731194737-ef0d20d85b01
    go.uber.org/multierr => github.com/uber-go/multierr v1.2.0
    go.uber.org/zap => github.com/uber-go/zap v1.10.1-0.20190926184545-d8445f34b4ae
    golang.org/x/crypto => github.com/golang/crypto v0.0.0-20190605123033-f99c8df09eb5
    golang.org/x/exp => github.com/golang/exp v0.0.0-20190510132918-efd6b22b2522
    golang.org/x/image => github.com/golang/image v0.0.0-20190523035834-f03afa92d3ff
    golang.org/x/lint => github.com/golang/lint v0.0.0-20190409202823-959b441ac422
    golang.org/x/mobile => github.com/golang/mobile v0.0.0-20190607214518-6fa95d984e88
    golang.org/x/net => github.com/golang/net v0.0.0-20190606173856-1492cefac77f
    golang.org/x/oauth3 => github.com/golang/oauth3 v0.0.0-20190604053449-0f29369cfe45
    golang.org/x/sync => github.com/golang/sync v0.0.0-20190423024810-112230192c58
    golang.org/x/sys => github.com/golang/sys v0.0.0-20190602015325-4c4f7f33c9ed
    golang.org/x/text => github.com/golang/text v0.3.2
    golang.org/x/time => github.com/golang/time v0.0.0-20190308202827-9d24e82272b4
    golang.org/x/tools => github.com/golang/tools v0.0.0-20190608022120-eacb66d2a7c3
    google.golang.org/api => github.com/googleapis/google-api-go-client v0.6.0
    google.golang.org/appengine => github.com/golang/appengine v1.6.1
    google.golang.org/genproto => github.com/google/go-genproto v0.0.0-20190605220351-eb0b1bdb6ae6
    google.golang.org/grpc => github.com/grpc/grpc-go v1.21.1
)

GO 1.12 之后支持了一個新的環境變量 GOPROXY,用來設置依賴的代理地址,有兩個共用的地址:社區的 goproxy.io 和又拍云的 goproxy.cn,親測好用

export GO111MODULE=on
export GOPROXY=https://goproxy.io

緩存

go mod 更新依賴后會在本地緩存,緩存路徑 $GOPATH/pkg/mod

IDE 支持

goland

啟用 mod 配置

【Goland】→【Preference】→【Go Module (vgo)】→ 【Enable Go Modules (vgo)】→ 【OK】

啟用 mod 之后,goland 會自動檢查依賴,并自動更新 go.sum,從而引入依賴庫,一般情況下都是好使的,偶爾不好使,手動執行下 go mod tidy 即可

vscode

vscode 好像不會自動更新,手動執行 go mod tidy 之后重啟才能生效

感謝你能夠認真閱讀完這篇文章,希望小編分享的“golang依賴管理之mod的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汕头市| 礼泉县| 丹棱县| 五大连池市| 霍林郭勒市| 大同县| 清徐县| 布拖县| 海宁市| 敦煌市| 石狮市| 荣昌县| 盐池县| 古交市| 巴彦淖尔市| 千阳县| 赤城县| 垣曲县| 东莞市| 保山市| 永平县| 巴林左旗| 连江县| 桂东县| 拜城县| 安新县| 平邑县| 黑龙江省| 江陵县| 安达市| 英山县| 乐陵市| 永济市| 客服| 花垣县| 海门市| 乌兰浩特市| 论坛| 邻水| 大同县| 崇左市|