在Go 中導入本地包:為什麼GOPATH 和主目錄會有所不同
Go 提供了一個使用相對路徑導入本地包的便捷方法路徑。然而,當套件駐留在 GOPATH 中時,這種方法有其限制。
GOPATH 的角色
GOPATH 指定 Go 將在其中搜尋包的目錄。在提供的範例中,專案位於 $GOPATH/src/project,這表示 Go 將期望套件名稱與目錄結構相符。
相對導入限制
相對導入路徑可讓您引用目前目錄或其子目錄中的包。在這種情況下,“models”套件位於專案的“models”子目錄中。
但是,當使用 go build 或 go install 編譯或安裝套件時,不完全支援相對導入。這些工具期望包路徑是絕對路徑或遵循「如何編寫 Go 程式碼」中所述的標準結構。
主目錄異常
當項目位於在主目錄(例如 ~/project)中,相對導入按預期工作。這是因為主目錄不是 GOPATH 的一部分,Go 會在目前目錄及其子目錄中搜尋套件。
解決方案
克服限制GOPATH 中的相對導入,建議根據「如何寫 Go 程式碼」中提供的指南來建立程式碼。這涉及使用絕對導入路徑或以與 GOPATH 結構一致的方式組織套件。
以上是為什麼相對導入在我的主目錄中有效,但在 GOPATH 中無效?的詳細內容。更多資訊請關注PHP中文網其他相關文章!