首頁 > 後端開發 > Golang > 主體

為什麼 go get 在使用 -u 時會下載同一包的兩個版本

WBOY
發布: 2024-02-12 22:00:11
轉載
558 人瀏覽過

为什么 go get 在使用 -u 时会下载同一包的两个版本

php小編小新解答為什麼在使用"go get -u"指令時會下載同一個套件的兩個版本。這個問題的原因在於go mod的工作原理。 go mod是Go語言在1.11版本引入的依賴管理工具,它會根據專案的go.mod檔案自動下載和​​管理依賴套件。當我們使用"go get -u"命令時,它會檢查go.mod檔案中的依賴套件版本,並嘗試下載最新的版本。然而,有些套件的版本更新可能會依賴其他套件的不同版本,因此go mod會下載兩個版本的套件以滿足依賴關係,這就是為什麼下載同一個套件的兩個版本的原因。

問題內容

我使用 go get -u 來取得依賴 golang.org/x/[email protected] 的軟體包。我注意到它首先下載 golang.org/x/[email protected] 然後下載 golang.org/x/[email protected]

然後我執行go clean -modcachego get golang.org/x/text ,它下載了golang.org/x/textv0.4.0 ,然後再go get -u entgo.io/ent 。這次 go 沒有下載 golang.org/x/[email protected]

#那麼,為什麼 go get -u 在本地沒有最新版本時同時下載舊版本和最新版本,以及為什麼在本地有最新版本時它不下載舊版本?

解決方法

因為這是兩步驟過程

  1. 取得依賴項
  2. 更新依賴項

從程式設計的角度來看,沒有充分的理由將這些合併到「取得最新依賴項」的單一關注點。

來自 go 指令文件

-u 標誌指示 get 更新提供命令列上命名的套件的依賴項的模組,以便在可用時使用較新的次要版本或補丁版本。

這表示 -u 專門處理您所取得的套件所依賴的模組,而不是您所取得的套件的模組。

此外,似乎-u 與將v0 版本中的任何更改視為主要版本更改的Go 慣用法無關,因此不能出於原則輕易推薦使用 -ugolang.org/x/test 的自述文件甚至說:

在 x/text 版本達到 1.0.0 之前,次要版本被視為主要版本。因此從 0.1.0 到 0.2.0 被認為是一個主要版本的提升。

以上是為什麼 go get 在使用 -u 時會下載同一包的兩個版本的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!