如何在 golang 的 go.mod 中正確使用遞歸替換?
在使用golang的go.mod時,正確使用遞歸替換是一個重要的問題。 php小編魚仔為您提供了一些解決方案。遞歸替換是指在go.mod檔案中將某個模組替換為本機目錄的方式,以便在開發過程中進行偵錯和修改。但是,如果替換的模組依賴其他模組,可能會導致一些問題。透過正確使用遞歸替換,您可以避免這些問題,並確保專案的依賴關係正常運作。在本文中,我們將討論如何在go.mod中正確使用遞歸替換,並提供一些實用的技巧和注意事項。
問題內容
我想要一個專案結構,如下所示:
src/github.com/myname/myproject/ - tl: - constructor - someghing.go - go.mod: module github.com/myname/myproject/tl/constructor require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 require github.com/myname/myproject/tl/types/account v0.0.0 require github.com/myname/myproject/tl/types/auth v0.0.0 require github.com/myname/myproject/tl/types/bots v0.0.0 replace github.com/myname/myproject v0.0.0 => ./../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./../types replace github.com/myname/myproject/tl/types/account v0.0.0 => ./../types/account replace github.com/myname/myproject/tl/types/auth v0.0.0 => ./../types/auth replace github.com/myname/myproject/tl/types/channels v0.0.0 => ./../types/channels - crcs - someghing.go - go.mod: module github.com/myname/myproject/tl/crcs - functions - account - someghing.go - go.mod: module github.com/myname/myproject/tl/functions/account require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../../crcs replace github.com/myname/myproject v0.0.0 => ./../../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./../../types - auth - someghing.go - go.mod: module github.com/myname/myproject/tl/functions/auth require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../../crcs replace github.com/myname/myproject v0.0.0 => ./../../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./../../types - bots - someghing.go - go.mod: module github.com/myname/myproject/tl/functions/bots require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../../crcs replace github.com/myname/myproject v0.0.0 => ./../../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./../../types - someghing.go - go.mod: module github.com/myname/myproject/tl/functions require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../crcs replace github.com/myname/myproject v0.0.0 => ./../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./../types - types - account - something.go - go.mod: module github.com/myname/myproject/tl/types/account require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../../crcs replace github.com/myname/myproject v0.0.0 => ./../../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./.. - auth - something.go - go.mod: module github.com/myname/myproject/tl/types/auth require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../../crcs replace github.com/myname/myproject v0.0.0 => ./../../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./.. - channels - something.go - go.mod: module github.com/myname/myproject/tl/types/channels require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../../crcs replace github.com/myname/myproject v0.0.0 => ./../../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./.. - someghing.go - go.mod: module github.com/myname/myproject/tl/types require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../crcs replace github.com/myname/myproject v0.0.0 => ./../.. - something.go - go.mod: module github.com/myname/myproject [some external dependencies] require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/l/types v0.0.0 => ./tl/types
這不起作用。我使用 jetbrains 的 ide,它在所有(子)模組上執行 go list,並告訴我以下錯誤:
go: github.com/myname/myproject/tl/[email protected] requires github.com/myname/myproject/tl/[email protected]: reading github.com/myname/myproject/tl/crcs/go.mod at revision tl/crcs/v0.0.0: unknown revision tl/crcs/v0.0.0
我不明白為什麼會發生這種情況,看起來它嘗試從存儲庫中獲取模組,即使所有內容都在本地替換。
除了改變專案結構之外,我願意接受建議。我將來需要能夠使用 account.sometype
之類的東西,因此將所有內容放在一個文件中會很痛苦。
上下文:我正在為電報建立mtproto 庫,它具有tl 模式,其中每個「請求」/「類別」都在自己的命名空間中(例如「帳戶」、「通道」)(或在全域命名空間中,例如我是functions
和types
對應)(因為這些函數/類別有超過1900 個,每個函數/類別都有自己的建構子和參數,因此將所有內容都放在一個模組中將很難使用)
tl資料夾中的檔案是從tl模式自動產生的go程式碼。
解決方法
感謝Dean指出您可以在一個模組中包含多個套件(如何?)。它解決了我的問題,同時仍然保持相同的結構。
以上是如何在 golang 的 go.mod 中正確使用遞歸替換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

是的,H5頁面製作是前端開發的重要實現方式,涉及HTML、CSS和JavaScript等核心技術。開發者通過巧妙結合這些技術,例如使用<canvas>標籤繪製圖形或使用JavaScript控制交互行為,構建出動態且功能強大的H5頁面。

如何使用JavaScript或CSS控制瀏覽器打印設置中的頁首和頁尾在瀏覽器的打印設置中,有一個選項可以控制是否顯�...

關於inline-block元素錯位顯示的原因及解決方案在編寫網頁佈局時,我們常常會遇到一些看似奇怪的顯示問題。比...

如何實現分段器的45度曲線效果?在實現分段器的過程中,如何讓點擊左側按鈕時右側邊框變成45度曲線,而點�...

CSS自定義resize符號的方法與背景色統一在日常開發中,我們經常會遇到需要自定義用戶界面細節的情況,比如調...

實時比特幣美元價格 影響比特幣價格的因素 預測比特幣未來價格的指標 以下是 2018-2024 年比特幣價格的一些關鍵信息:
