Heim >Backend-Entwicklung >Golang >Kann ein Go-Projekt sowohl eine Bibliothek als auch eine CLI im selben Verzeichnis haben?
Können sich zwei Pakete im selben Verzeichnis befinden?
Bei der Entwicklung von Projekten, die sowohl eine Bibliothek als auch eine Befehlszeilenschnittstelle (CLI) erfordern, ist dies der Fall Es kommt häufig zu Konflikten zwischen zwei Paketen, die im selben Verzeichnis vorhanden sind. Da der Go-Compiler ein Paket namens „main“ mit einem „func main“ als Einstiegspunkt benötigt, wird davon ausgegangen, dass es unmöglich ist, separate Pakete sowohl für die Bibliothek als auch für die CLI zu haben.
Lösung : Verschachtelte Paketstruktur
Es gibt jedoch eine Problemumgehung für dieses Problem, indem beide Pakete in einen neuen Ordner im selben Verzeichnis wie „main.go“ verschoben werden. Datei. Der Schlüssel besteht darin, sicherzustellen, dass das neue Paket aus dem richtigen Pfad innerhalb von „$GOPATH“ importiert wird.
Beispiel:
Bedenken Sie die aktualisierte Verzeichnisstruktur:
whatever.io/ myproject/ a/ # New folder a.go main.go
In „main.go“ importieren Sie das neue Paket aus seinem verschachtelten Pfad:
package main import ( "../myproject/a" ) func main() { a.Hello() }
In „a.go“, Funktionen für die Bibliothek definieren:
package a import ( "fmt" ) func Hello() { fmt.Println("hello from a") }
Erstellen und Ausführen:
Jetzt können Sie das Projekt erfolgreich erstellen und ausführen:
go run main.go # Prints "hello from a" go build # Creates the executable without errors
Diese Lösung ermöglicht es Ihnen, sowohl eine Bibliothek (Paket „a“) als auch eine CLI (Paket „main“) im selben Verzeichnis zu haben, wodurch der Konflikt gelöst wird, der durch zwei entsteht Pakete mit demselben Namen im selben Verzeichnis.
Das obige ist der detaillierte Inhalt vonKann ein Go-Projekt sowohl eine Bibliothek als auch eine CLI im selben Verzeichnis haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!