Go Ordner und die Pakete

Ich habe mir heute go angeschaut. Mit dem getting started kommt man gut voran. Allerdings stellt sich eine erste Verwirrung, wenn man bestimmten Source Code in eine andere Datei auslagert. Mit IntelliJ wird dies auch sofort als lauffähig angezeigt. Laut Tutorial wird ein go Programm einfach gestartet.

go run main.go

Sofern man dieses Programm mit einer zweiten Datei startet, kommt dann eine Fehlermeldung. Nun die Verwirrung, warum go diese nicht erkennt. Die Lösung ist einfach, aber in der offiziellen Dokumentationen nicht so einfach zu finden.

go run .

Und schon werden alle Dateien in diesen Ordner gestartet.

Was ist mit mehreren main Funktionen?

Da ist natürlich die Frage was passiert, wenn mehrere main Funktionen in diesem Ordner gefunden werden. Dann startet die Anwendung nicht. Dh der Funktionsname main ist reserviert und kann nur einmal definiert werden.

Neuer Ordner und Packages

Jetzt möchte ich die Datei in einem neuen Ordner schieben und schauen, was passiert. Ich bekomme die Datei mit den „go run .“ nicht gestartet. Wie bekommen wir dies hin?

Der Grund dafür ist einfach. Jeder Ordner ist ein eigenes technisches package. D.h. ein Artefakt, welches ich mit einer jar vergleichen würde. Das bedeutet zyklische Abhängigkeiten sind nicht möglich und es ist aus meiner Sicht aufwändiger diese zu erstellen. Der große Vorteil: Anti-Pattern packagestrukturen, wie Entities etc., sind gar nicht möglich. Aus meiner Sicht eine tolle Sache, über die man sich viel mehr Gedanken machen sollte. Auf der anderen Seite bin ich mir nicht sicher, ob das nicht eher zu weniger Struktur führt.

Ein großartiges Video hierzu:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert