Heim >Backend-Entwicklung >Golang >Kann ein Go-Projekt sowohl eine Bibliothek als auch eine CLI im selben Verzeichnis haben?

Kann ein Go-Projekt sowohl eine Bibliothek als auch eine CLI im selben Verzeichnis haben?

Barbara Streisand
Barbara StreisandOriginal
2024-12-06 16:28:13921Durchsuche

Can a Go Project Have Both a Library and a CLI in the Same Directory?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn