Lokale Pakete in Go importieren: Warum der GOPATH und das Home-Verzeichnis einen Unterschied machen
Go bietet eine praktische Möglichkeit, lokale Pakete mit relativ zu importieren Wege. Dieser Ansatz weist jedoch Einschränkungen auf, wenn sich das Paket innerhalb des GOPATH befindet.
Die Rolle des GOPATH
GOPATH gibt die Verzeichnisse an, in denen Go nach Paketen sucht. Im bereitgestellten Beispiel befindet sich das Projekt unter $GOPATH/src/project, was bedeutet, dass Go erwartet, dass der Paketname mit der Verzeichnisstruktur übereinstimmt.
Relative Importbeschränkungen
Relative Importpfade ermöglichen es Ihnen, auf Pakete im aktuellen Verzeichnis oder seinen Unterverzeichnissen zu verweisen. In diesem Fall befindet sich das Paket „models“ im Unterverzeichnis „models“ des Projekts.
Beim Kompilieren oder Installieren eines Pakets mit go build oder go install werden relative Importe jedoch nicht vollständig unterstützt. Diese Tools erwarten, dass Paketpfade absolut sind oder der in „So schreiben Sie Go-Code“ beschriebenen Standardstruktur folgen.
Home Directory-Ausnahme
Wenn sich das Projekt befindet Im Home-Verzeichnis (z. B. ~/project) funktionieren relative Importe wie erwartet. Dies liegt daran, dass das Home-Verzeichnis nicht Teil des GOPATH ist und Go nach Paketen im aktuellen Verzeichnis und seinen Unterverzeichnissen sucht.
Lösung
Um die Einschränkungen zu überwinden Aufgrund der relativen Importe in GOPATH wird empfohlen, Ihren Code gemäß den Richtlinien unter „So schreiben Sie Go-Code“ zu strukturieren. Dazu gehört die Verwendung absoluter Importpfade oder die Organisation Ihrer Pakete in einer Weise, die mit der GOPATH-Struktur übereinstimmt.
Das obige ist der detaillierte Inhalt vonWarum funktionieren relative Importe in meinem Home-Verzeichnis, aber nicht innerhalb des GOPATH?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!