1 回答
TA貢獻1796條經驗 獲得超10個贊
因為在 Go 1.17 中,模塊圖已更改為啟用修剪和延遲加載。第二個塊包含間接依賴關系。require
https://golang.org/doc/go1.17#go-command
如果模塊指定 go 1.17 或更高版本,則模塊圖僅包含其他 go 1.17 模塊的直接依賴關系,而不包括其完全的傳遞依賴關系。[...]
[...]如果模塊在其 go.mod 文件中指定 go 1.17 或更高版本,則其 go.mod 文件現在包含一個顯式 require 指令,用于提供可傳遞導入包的每個模塊。(在以前的版本中,go.mod 文件通常只包含對直接導入的包的顯式要求。
由于在擴展的 Go 1.17 go.mod 文件中,顯式需求的數量可能要大得多,因此 go 1.17 模塊中對間接依賴項的新添加需求將保留在與包含直接依賴項的塊不同的需求塊中。
注意:您在問題中發布的文件在第一個 require 塊中具有依賴項。根據引用的文檔中的“新添加”一詞,我懷疑這是因為這些依賴項已經在那里列出并且沒有重新排列它們。如果您:go.mod//indirect//indirectgo mod tidy
手動刪除其中一個
和/或重新創建 Go 版本設置為 或更高的文件
go.mod1.17和/或運行
go mod tidy -go=1.17
然后它將在兩個塊中分離直接和依賴關系。無論如何,這是一種視覺上的便利,文檔并不要求創建兩個單獨的塊。//indirect
其他參考資料:
行為依賴于 的指令: https://go.dev/ref/mod#go-mod-file-go
go.modgo
- 1 回答
- 0 關注
- 267 瀏覽
添加回答
舉報
