Web Server Beispiel in Go
Mit diesem Beispielprojekt möchte ich Anfängern helfen, die Arbeitsmittel rund um Go kennen zu lernen und die ersten Anfänger-Tutorials ergänzen.
Nachdem du die Grundlagen der Programmiersprache anhand der Tutorials oder auch der Anleitung von Bitlöffel gelernt hast, schau dir mein Beispielprojekt an. Es demonstriert einige bewährte Vorgehensweisen:
- eine vernünftige Verzeichnisstruktur
- wie man debug Meldungen puffert, siehe mein Konzept
- wie man Kontext verwendet, um requestId und Logger durch zu reichen
- wie man panics (Exceptions) abfängt und vernünftig loggt
- wie man auf Datenbanken zugreift (MariaDB, MySQL, Postgres und Cockroach)
- wie man einen gRPC Service erstellt
- wie man einen REST Service mit OpenAPI Schema erstellt
- wie man Unit Tests schreibt
- wie man Docker Kompositionen verwendet
Download: webserverexample.zip
Als Einstiegspunkt habe ich die Datei README.md geschrieben. Weitere Informationen zum Code findest du in den eingebetteten Kommentaren.
Über Go
Die Cloud Programmiersprache Go (golang) wurde für junge Programmierer gemacht, um sie von der Komplexität klassischer OOP Sprachen zu entlasten:
"The key point here is our programmers are Googlers, they're not researchers.
They're typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++,
probably learned Python. They're not capable of understanding a brilliant language but we want to
use them to build good software. So, the language that we give them has to be easy for them to
understand and easy to adopt...Go has indeed become the language of cloud infrastructure."
Rob Pike, Entwickler bei Google und Co-Autor von Go.
Go ist wirklich einfacher, dennoch kann ich damit große Anwendungen mit 100.000 Zeilen Code ebenso gut entwickeln, wie mit Java. Go Programme starten aber viel schneller und belegen erheblich weniger RAM.
Go eignet sich hauptsächlich zum Programmieren von Netzwerk Diensten und Kommandozeilen-Tools. Für grafische Desktop Anwendungen muss man fremde Bibliotheken wie Fyne oder Gio UI verwenden. Beide rendern ihre eigenen Dialog-Elemente durch die 3D Bibliotheken des jeweiligen Betriebssystems. Sie sehen daher anders aus (kein natives Look&Feel) und man braucht zusätzlich einen passenden C Compiler, wodurch Cross-Compiling erschwert wird.
