首頁  >  文章  >  後端開發  >  Golang,從本地導入路徑轉移到遠端導入路徑問題

Golang,從本地導入路徑轉移到遠端導入路徑問題

王林
王林轉載
2024-02-09 08:27:38596瀏覽

Golang,從本地導入路徑轉移到遠端導入路徑問題

php小編百草為你解答Golang中從本機匯入路徑轉移到遠端匯入路徑的問題。在Golang開發中,我們經常會遇到從本地導入路徑轉移到遠端導入路徑的情況,尤其是當多人協作開發或專案遷移時。本文將詳細介紹如何正確處理這個問題,確保程式碼能順利運作。讓我們一起來看看吧!

問題內容

我剛開始將我的應用程式分解為不同的儲存庫。像許多人一樣,我正在經歷處理 Go 和更改存儲庫的麻煩。但這些問題有很多問答,所以我不會在這裡詢問。

相反,我有一個簡單的問題,但我無法理解。我的所有模組,因為它是一個大應用程序,都只是本地引用。例如core/validate等。

將內容移至多個儲存庫。似乎會導致本地引用出現問題,因此我將路徑更改為遠端路徑,例如 gitlab.com/<group>/core.git/validate</group> 正如幾個問答所建議的那樣。

但是,這會帶來一個問題,如果說gitlab.com/<group>/core.git/config</group> 引用了gitlab.com/<group>/core. git/validate</group> 並不表示gitlab.com/ <group>/core.git/config</group> 現在指向gitlab.com/gitlab.com/... 中的某些內容或指向遠端伺服器,或指向彼此以外的任何地方,就像它們只有像core/validate 這樣的相對路徑時一樣?當我更改它們時,它看起來就是這樣,因為我的 IDE (GoLand) 顯示未找到的參考。

我還沒有嘗試做go mod init 並從頭開始重建mod,但是go mod tidy 不起作用,我不知道我是否也必須在go. work 中進行更改遠端路徑很好,但現在我只是在IDE 中找不到顯示的導入。

似乎如果您使用遠端引用來進行開發時在程式碼中所做的更改,則必須推送更改,以便它是引用指向的位置,也許還可以執行go get更改為引用本地遠端路徑的地方,這似乎是一種糟糕的開發方式,因此不可能是正確的。

那麼,這些遠端路徑如何與開發配合使用,我缺少什麼?

解決方法

有幾個概念會造成混淆。

模組是套件的集合。您可以將模組命名為“mymodule”,然後“mymodule”下的所有套件將命名為“mymodule/pkg1”、“mymodule/pkg2/otherpkg”等。

然後您就有了套件的導入路徑。導入路徑顯示包的位置。例如,你的原始碼在“mymodule/pkg1”中,而你導入了“mymodule/pkg2”,那麼這是對同一模組下的套件的引用。

現在假設您在「github.com/mygroup/othermodule」上有另一個模組,名為「othermodule」。您在此模組中導入一個套件作為“github.com/mygroup/othermodule/pkg1”。如果“othermodule/pkg1”引用“othermodule/pkg2”,那麼它仍然會導入“othermodule/pkg2”,因為它位於同一模組中。但是從“mymodule/pkg1”中,您將其匯入為“github.com/mygroup/othermodule/pkg2”。

Go 模組系統使用其他模組的版本引用。當您包含模組中的套件時,該模組的特定版本將會加入 go.mod 中。如果您向該模組推送新的更改,則必須更新該引用以包含這些更改。這就是為什麼最好不要將緊密耦合的項目分成多個模組的原因。

如果您想一起開發多個模組,請使用「replace」指令來使用該模組的本機副本,而不是指向儲存庫上的版本。

以上是Golang,從本地導入路徑轉移到遠端導入路徑問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除