組織 Go 程式碼時,內部套件提供了在專案內維護模組化和封裝性的方法。在給定的程式碼結構中,在「project」目錄中建立「內部」套件。
但是,如上所述,無法從其父目錄以外的內部套件匯入。這是因為內部包不會導出,只能從專案的源代碼樹中存取。從專案目錄外部的外部匯入僅適用於位於 $GOPATH/src 樹中的套件。
要解決導入問題,項目目錄可以放在$GOPATH/src下。這可確保位於「project/main.go」的主套件可以存取內部套件。
或者,隨著Go v1.11 及更高版本中引入模組,您可以透過建立go .mod 檔案來定義專案的模組。此檔案指定專案中每個模組的位置。以下是如何設定的範例:
project/ go.mod main.go internal/ bar/ bar.go go.mod foo/ foo.go go.mod
go.mod for project/internal/bar:
module bar go 1.14
bar。去:
package bar import "fmt" // Bar prints "Hello from Bar" func Bar() { fmt.Println("Hello from Bar") }
go.mod項目/內部/foo:
module foo go 1.14
foo.go:
package foo import "fmt" // Foo prints "Hello from Foo" func Foo() { fmt.Println("Hello from Foo") }
main.go:
package main import ( "project/internal/bar" "project/internal/foo" ) func main() { bar.Bar() foo.Foo() }
在此設定中,go.mod 檔案定義了每個內部的模組路徑和依賴資訊 包裹。 Replace 語句確保 Go 知道在哪裡找到內部包,即使它們位於標準 $GOPATH/src 樹之外。
透過這種方法,您可以輕鬆地使用內部包組織程式碼並無縫存取它們來自主包,在您的專案中提供模組化和可訪問性。
以上是如何正確使用和導入Go內部包?的詳細內容。更多資訊請關注PHP中文網其他相關文章!