我剛剛在現有專案上試用了Go 1.18 作業區。考慮以下專案目錄結構:
project-root/
|-- app/
| |-- go.mod
| |-- go.sum
根據檔案,我在go work init ./app專案的根目錄中運行了該命令。此命令go.work按預期創建了一個檔案,但它也創建了一個go.work.sum未預期的檔案。
令人困惑的是,它go.work.sum參考了兩個可以在 中找到的模塊,但是在和go.sum之間進行比較時,每個模塊的版本并不相同。然后還有一個問題,為什么只參考了這兩個模塊而沒有參考其他模塊?請注意,作業區中只有一個模塊。go.sumgo.work.sumgo.work.sum
go.work.sum檔案跟蹤什么?它在任何地方都有記錄嗎?
uj5u.com熱心網友回復:
該go.work.sum檔案在相關功能提案中提到(似乎沒有其他地方?):
https://go.googlesource.com/proposal/ /master/design/45713-workspace.md#files
go 命令將使用作業區模塊中存在的檔案集合
go.sum來驗證依賴模塊,但有些情況下go.sum作業區模塊中的檔案不包含驗證構建所需的所有總和:更簡單的情況是,如果作業區go.mod檔案本身不完整,go 命令會將缺失的總和添加到作業區的go.work.sum檔案而不是模塊的go.sum.
該提案(與上面的鏈接相同)還描述了另外一個用例,其中兩個專案都沒有從某個特定版本的模塊匯入包,而是需要它作為間接依賴項,因此缺少模塊代碼的校驗和。
因此,您的子模塊可能會顯示其中一種情況。如果是前者,我希望go mod tidy在子模塊上運行會使所有內容同步并消除對go.work.sum. 根據您的描述,聽起來像是后者,然后go.work.sum有必要跟蹤丟失的校驗和。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450166.html
上一篇:不在golang中列印變數系列
