Heim  >  Artikel  >  Backend-Entwicklung  >  GO – Projektstruktur

GO – Projektstruktur

王林
王林Original
2024-07-17 03:41:01920Durchsuche

Ich habe dieses Jahr (2022) angefangen, wirklich mit Golang zu programmieren, und habe sofort nach Referenzen gesucht, wie ich meine Struktur für das Projekt am besten weiterentwickeln kann. Dieser Beitrag wird nur einer von vielen anderen sein, die sich mit demselben Thema befassen, und vielleicht habe ich mich deshalb entschieden, ihn zu schreiben.

Erstens ist Golang bereits sehr unterschiedlich in der Art und Weise, wie es mit Ordnern/Paketen umgeht, und zur Verbesserung hat es ein sehr eigensinniges Wesen, wobei viele offizielle Dokumente darüber informieren, wie „Goway“ etwas tun würde (vollständig). von me touch), allerdings gibt es bei der Art und Weise, wie Sie Ihre Dateien und Ordner organisieren, keine wirkliche Richtung, sodass jeder diesem Teil seine eigene Interpretation der Welt gibt.

Ich werde diesen Beitrag in 3 Referenzen unterteilen und dann zeigen, wie die Mischung dieser Referenzen im Projekt ausgefallen ist.

Erster Hinweis

Ein komplexes System, das funktioniert, entwickelte sich immer aus einem einfachen System, das funktionierte.
-- Gallsches Gesetz

Bei kleinen Anwendungen sollte die Projektstruktur einfach sein.

Imagem para um projeto simples com tudo na raiz


https://innovation.enova.com/gophercon-2018-how-do-you-structure-your-go-apps/

Zweite Referenz

Die „Community“ hat eine Reihe historischer und neuer Design-Layoutmuster durchgeführt, die im Go-Ökosystem üblich sind. In dieser Umfrage gibt es viele coole Dinge, aber was meine Aufmerksamkeit erregte, waren die Ordner /cmd und /internal .

/cmd

Hauptanwendungen für dieses Projekt.
Der Verzeichnisname für jede Anwendung muss mit dem Namen der ausführbaren Datei übereinstimmen, die Sie haben möchten (z. B. /cmd/myapp).

/intern

Private Anwendung und Bibliothekscode. Dies ist Code, den andere nicht in ihre Anwendungen oder Bibliotheken importieren sollen. Beachten Sie, dass dieses Layoutmuster vom Go-Compiler selbst vorgegeben wird.

Dritte Referenz

Architekturen, die „Details“ besser von dem trennen, was tatsächlich Wert liefert.

GO — Estrutura de projetos


Ergebnis

Für eine einfache Anwendung versuche ich, sie einfach zu halten. Wenn der Umfang jedoch etwas größer wird, versuche ich, leicht zwischen „Kern“/Domäne und Detail/Infrastruktur zu unterscheiden.

GO — Estrutura de projetos


Beachten Sie, dass ich in cmd nicht über den Tuttipet-Ordner verfüge, wie das Referenzprojekt vermuten lässt. Zuerst habe ich versucht, das vorgeschlagene Muster zu verwenden, aber da diese API bereits mit einer Befehlszeilenschnittstelle und einem Anbieter für Terraform herauskam, habe ich beschlossen, es dabei zu belassen.

GO — Estrutura de projetos


Ein kurzer Blick auf den Kern. Ich versuche hier einfach zu sein und keine Ordner zu erstellen. Ich pflege nur einen Kontaktpunkt mit der Außenwelt (main.go), alles, was verallgemeinert wird, hat seine eigene Datei und alles, was nicht, bleibt einfach in seinem Kontext.

GO — Estrutura de projetos


Mit tuttipet.New (kurz, prägnant und eindrucksvoll) kann die „schmutzige“ Ebene mit den Usecases interagieren (ich finde das Wort Usecase leichter zu assimilieren als Interaktor)

GO — Estrutura de projetos


Schnelles Heranzoomen der Details. Hier sind einfach die Werkzeuge, mit denen die Domain ihren Erfolg erzielen wird.

Abschluss

Ich bin immer noch ein Kind auf dem Weg, den Golang bietet, und überlege immer noch, was man damit machen kann. Obwohl mir die Go-Methode, manche Dinge zu erledigen, nicht gefällt, hat sie sich jedoch als recht einfach erwiesen und robust.

Zusammenfassung, ich versuche es möglichst einfach zu halten und wenn es zu komplex wird ... gehe ich zurück ans Zeichenbrett.

Weitere Referenzen

https://dev.to/booscaaa/implementando-clean-architecture-com-golang-4n0a
https://github.com/golang-standards/project-layout
https://blog.boot.dev/golang/golang-project-structure/
https://github.com/bnkamalesh/goapp
https://www.wolfe.id.au/2020/03/10/how-do-i-structure-my-go-project/
https://blog.logrocket.com/flat-structure-vs-layered-architecture-structuring-your-go-app/
https://developer20.com/how-to-structure-go-code/
https://dev.to/jinxankit/go-project-structure-and-guidelines-4ccm
https://github.com/bxcodec/go-clean-arch
https://golangexample.com/example-go-clean-architecture-folder-pattern/
https://www.calhoun.io/flat-application-structure/
https://go.dev/doc/ Effective_go#names
https://go.dev/blog/package-names

Originalbeitrag: https://medium.com/@espigah/go-layout-do-projeto-18aacce8089d

Das obige ist der detaillierte Inhalt vonGO – Projektstruktur. 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
Vorheriger Artikel:FabrikdesignmusterNächster Artikel:Fabrikdesignmuster