首頁 >後端開發 >Golang >為什麼導入非本機Go套件時「本地導入」失敗?

為什麼導入非本機Go套件時「本地導入」失敗?

DDD
DDD原創
2024-12-15 10:35:10587瀏覽

Why Does

非本地包中的本地導入:理解錯誤

在 Go 中,本地導入用於從同一目錄或子目錄導入包當前工作目錄。但是,當導入非本地套件時,無法應用此技術,例如錯誤“local import "./greeting" in non-local package.”

錯誤原因

為了理解錯誤,讓我們檢查提供的檔案結構:

/Users/clarkj84/Desktop/LearningGo
└── src
    └── jacob.uk.com
        ├── greeting
        │   └── greeting.go
        └── helloworld.go

嘗試執行go install 時出現問題src 目錄中的jacob.uk.com。此命令嘗試安裝 jacob.uk.com 軟體包,其中包括 helloworld.go 中的 ./greeting 導入。然而,Go 將此解釋為本地導入,因為它是從 src 目錄執行的,而套件本身並不位於 src 內。

解決方案

要解決該錯誤,有兩個選項可用:

  1. 更改工作目錄:導航到src/jacob. uk.com 目錄並執行go install 而不指定包。這允許 Go 將導入正確解析為本地導入。
  2. 使用絕對導入路徑: 將本地導入替換為絕對導入路徑:
import "jacob.uk.com/greeting"

這種方法允許導入和使用包,而不管工作目錄如何。

Absolute 的優點導入

絕對導入比本地導入有幾個優點:

  • 清晰度:它們明確指定導入包的位置,使其更易於理解和維護。
  • 可移植性:絕對導入允許從任何位置編譯和運行程式碼,而無需更改導入路徑。
  • Go 模組相容性: 現代 Go 開發依賴 Go 模組,預設使用絕對導入路徑。

以上是為什麼導入非本機Go套件時「本地導入」失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn