Bei der Organisation von Go-Code bieten interne Pakete eine Möglichkeit, die Modularität und Kapselung innerhalb eines Projekts aufrechtzuerhalten. In der angegebenen Codestruktur wird ein „internes“ Paket im „Projekt“-Verzeichnis erstellt.
Jedoch wie erwähnt , ist der Import aus einem internen Paket außerhalb seines übergeordneten Verzeichnisses nicht möglich. Dies liegt daran, dass interne Pakete nicht exportiert werden und nur über den Quellbaum des Projekts zugänglich sind. Externe Importe von außerhalb des Projektverzeichnisses funktionieren nur für Pakete, die sich im $GOPATH/src-Baum befinden.
Um die Importprobleme zu beheben, Das Projektverzeichnis kann unter $GOPATH/src abgelegt werden. Dadurch wird sichergestellt, dass die internen Pakete für das Hauptpaket unter „project/main.go“ zugänglich sind.
Alternativ können Sie mit der Einführung von Modulen in Go v1.11 und höher das Modul für Ihr Projekt definieren, indem Sie eine go.mod-Datei erstellen. Diese Datei gibt den Speicherort jedes Moduls in Ihrem Projekt an. Hier ist ein Beispiel dafür, wie es eingerichtet werden würde:
project/ go.mod main.go internal/ bar/ bar.go go.mod foo/ foo.go go.mod
go.mod für project/internal/bar:
module bar go 1.14
bar. go:
package bar import "fmt" // Bar prints "Hello from Bar" func Bar() { fmt.Println("Hello from Bar") }
go.mod für project/internal/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() }
In diesem Setup definiert die Datei go.mod den Modulpfad und die Abhängigkeitsinformationen für jedes interne Paket. Die Ersetzungsanweisung stellt sicher, dass Go weiß, wo die internen Pakete zu finden sind, auch wenn sie sich außerhalb des standardmäßigen $GOPATH/src-Baums befinden.
Mit diesem Ansatz können Sie Ihren Code einfach mithilfe interner Pakete organisieren und nahtlos darauf zugreifen aus dem Hauptpaket und bietet sowohl Modularität als auch Zugänglichkeit innerhalb Ihres Projekts.
Das obige ist der detaillierte Inhalt vonWie kann ich interne Pakete in Go richtig verwenden und importieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!