Gemeinsame Namen in Bibliotheken und Binärdateien verwalten
Bei der Entwicklung von Software kann es wünschenswert sein, sowohl eine Bibliothek als auch eine eigenständige ausführbare Datei mit zu haben gleichen Namen. Dies kann in Go zu Herausforderungen führen, da der empfohlene Ansatz darin besteht, dass ausführbare Dateien und Bibliotheken unterschiedliche Namen haben.
Im bereitgestellten Beispiel versucht der Entwickler, eine Bibliothek für Tar-Operationen zu erstellen, möchte aber auch eine eigenständige Bibliothek Tar-Befehlszeilenprogramm. Der anfängliche Ansatz, den ausführbaren Code in einem Verzeichnis namens main.go innerhalb des Bibliothekspakets zu platzieren, funktioniert nicht wie erwartet.
Um dieses Problem zu beheben, wird empfohlen, die Codebasis wie folgt zu organisieren:
src/ tar/ tar.go # tar library tar/ main.go # tar binary
Mit dieser Struktur erstellt go build -o $GOPATH/bin/tar tarbin sowohl eine Bibliothek namens tar als auch eine Binärdatei namens tar.
Wenn der Code lautet Auf GitHub gehostet, lautet die bevorzugte Verzeichnisstruktur:
src/ github.com/ you/ tar/ tar.go # tar library tar/ main.go # tar binary
Dieses Layout stellt sicher, dass beim Ausführen von go get install github.com/you/tar/tar eine Binärdatei namens tar installiert wird und go get install github ausgeführt wird .com/you/tar installiert die Bibliothek mit dem Namen github.com/you/tar.
Abhängig vom Hauptzweck der Codebasis können die Bibliothek und die Binärdatei im Verzeichnis ausgetauscht werden Struktur.
Durch die Verwendung separater Unterverzeichnisse für die Bibliothek und die Binärdatei innerhalb des Paketverzeichnisses können Entwickler Code mit gemeinsamen Namen in Go effektiv verwalten und so sowohl Bibliotheks- als auch eigenständige ausführbare Funktionen ermöglichen.
Das obige ist der detaillierte Inhalt vonWie kann ich sowohl eine Go-Bibliothek als auch eine eigenständige ausführbare Datei mit demselben Namen erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!