Verwenden Sie die empfohlene Verzeichnisstruktur in der Sprache Go (Golang-Standards / Projektlayout) für lokale Projekte (private Quellen)

go version go1.15.2

Gemäß der empfohlenen Verzeichnisstruktur der Go Language Community ist das Standard-Paketverwaltungssystem "Go Modules / go / wiki / Modules) ”war subtil süchtig danach. Ich habe den gleichen Artikel wie ein Memo auf meiner Website geschrieben, aber ich habe ihn auch auf Qiita abgelegt, weil ich Tsukkomi wollte.

Beispiel für die Verzeichniskonfiguration

Namen (und Unterelemente) mit einem Ausrufezeichen (!) Sind beliebige Bezeichner.

my_project(!)
├── web #Vom Websystem verwendete Off-System-Ressourcen. js oder Bilder
├── assets #Externe Ressourcen, die außerhalb des Websystems verwendet werden.
├── cmd #Hauptmodul speichern
│   ├── mainexe(!) #Ausführungsdatei im Projekt. Bauen Sie diese Einheit ein
│   │   └── main.go
│   └── confexe(!) #Ein weiteres Beispiel für eine Ausführungsdatei
│       └── main.go
├── configs #Einstellungsdatei
│   └── main.yaml(!)
├── docs #Dokument. Weil es für mich ist, schreibe ich ein Memo
│   └── readme.md
├── internal #Privates Modul
│   ├── app #Ein Modul für dieses Projekt. Ist es Geschäftslogik?
│   │   ├── mainexe(!) #Durch ausführbare Datei trennen
│   │   │   └ mainview #Service-ähnliches Gefühl in MVCS?
│   │   │       └ mainview.go
│   │   └── confexe(!)
│   │       └ mainview
│   │           └ mainview.go
│   └── pkg #Privates Universalmodul
│       └ my_lib(!) #Etwas zum Wiederverwenden
├── scripts #Shell, die zur Erstellungszeit verwendet wird usw.
└── go.mod #Vom Go-Modul generierte Dateien

Initialisierung von Go Moduls

cd my_project
go mod init 192.168.0.0/my_project

In dieser Hinsicht wurde der Hostname auf 192.168.0.0 festgelegt.

Nicht als Modul veröffentlicht = Es wird nicht von go get abgerufen, hat also keine andere Bedeutung als nur eine Zeichenfolge. (Ich denke) Alles sollte in Ordnung sein, solange es den Punkt (.) Enthält. Dies ist die Regel des Hostnamens. Initialisieren Sie einschließlich des Ganzen, nicht unter cmd (Moduleinheit).

Verwenden Sie das Modul vom Hauptmodul aus

package main

import (
	"192.168.0.0/my_project/internal/app/mainexe/mainview"
)

func main() {
	mainview.SomeFunction()
}

Sie können es problemlos verwenden.

build

go build -o mainexe cmd/mainexe/*.go

Die Option o gibt den Namen der Ausgabedatei an. Im obigen Beispiel wird es direkt unter dem Projektverzeichnis ausgegeben. Sie können ein Verzeichnis wie dist erstellen und es als Ausgabezielpfad einfügen.

Persönlich habe ich build.sh im Skriptverzeichnis und erstellt Ich habe den obigen Befehl geschrieben und ihn mit "./scripts/mainexe_build.sh" ausgeführt.

Golang wurde lange Zeit verlassen, daher bin ich immer noch ein Anfänger, obwohl es einige alte Artikel gibt. Wenn Sie Tsukkomi haben, bitte m (_ _) m

Recommended Posts

Verwenden Sie die empfohlene Verzeichnisstruktur in der Sprache Go (Golang-Standards / Projektlayout) für lokale Projekte (private Quellen)