×

Go for it: Eine kurze Einführung in die Programmiersprache ‚Go‘

Foto von Brett Jordan auf Unsplash

Die Programmiersprache ‚Go‘ (https://go.dev/) ist eine moderne, kompilierbare und statisch typisierte Sprache. Sie wurde von den Google-Mitarbeitern Robert Griesemer, Rob Pike und Ken Thompson konzipiert und im Jahr 2009 offiziell als Open-Source-Projekt vorgestellt.

Bei der Entwicklung haben sich die drei umgeschaut und überlegt, welche Features von anderen Sprachen ihnen gut gefallen haben oder ihnen besonders wichtig erschienen:

  • Statische Typisierung und Laufzeiteffizienz wie bei C
  • Lesbar- und Nutzbarkeit wie bei Python
  • Hohe Netzwerk-Performance und Multiprocessing
  • Einfache Nebenläufigkeit

Da in ihren Augen keine Sprache alle diese Eigenschaften gleichzeitig erfüllte, fingen sie damit an, ‚Go‘ zu entwickeln. Die Version 1.0 wurde dann im März 2012 veröffentlicht und schnell wurde ‚Go‘ für große Open-Source Projekte wie Docker, Kubernetes und Terraform eingesetzt. Diese Projekte zeigen die Stärken von ‚Go‘ in Bezug auf Leistung und Skalierbarkeit. Auch große Firmen wie Google, Netflix oder Uber nutzen ‚Go‘ in ihren Systemen.

Vorteile von ‚Go‘

‚Go‘ ist einfach zu lernen, aber dennoch leistungsstark. Mit einer sehr umfassenden Standard-Library kann ein Großteil von Aufgaben ohne externe Packages erledigt werden. Die ‚Go‘-Community motiviert tatsächlich dazu, so wenig externe Packages wie möglich zu nutzen. Das heißt aber nicht, dass es keine guten und großen Libraries gibt. In Projekten, die wir als eck*cellent IT intern nutzen/verwenden, haben wir z.B. go-chi (Ein Router für den eingebauten HTTP Service), gorm (ORM-Library für Go), zerolog (hoch performanter JSON-Logger) und swag (Swagger Generator) genutzt.

Anders als bei anderen Sprachen, gibt es bei ‚Go‘ kein zentrales Repository für Packages. Es wird nur mit Git-Repositories gearbeitet. Das Einbinden von z.B. zerolog ins eigene Projekt funktioniert mit dem Befehl „go get -u github.com/rs/zerolog/log“. Dabei ist es egal, ob ein Github-Repository, andere öffentliche oder sogar eigene, z.B. firmeninterne, Git-Dienste genutzt werden. Das erleichtert auch die Entwicklung interner Packages, da kein extra Dienst zur Verwaltung und Bereitstellung notwendig ist.

Ein weiterer großer Vorteil ist, dass Applikationen, die in ‚Go‘ geschrieben und kompiliert wurden, alles beinhalten, was zum Ausführen benötigt wird. Ein Installieren von Abhängigkeiten auf den Zielsystemen fällt also komplett weg. Das Kompilieren für andere Systemarchitekturen, also ein cross-compilen, ist dabei ebenfalls möglich.

‚Go‘ wurde außerdem von Anfang an mit Nebenläufigkeit im Hinterkopf entwickelt. Funktionen nebenläufig auszuführen, in einer sogenannten „goroutine“, erfordert nichts weiter, als das Keyword „go“ vor den Funktionsaufruf zu setzen. Ein Hin- und Herreichen von Daten zwischen den Goroutinen ist mit Channeln ähnlich einfach möglich.

Dieses Beispiel für Nebenläufigkeit stammt von https://go.dev/tour/concurrency/1

Container

Durch die geringe Größe der kompilierten Anwendungen und dadurch, dass keine Abhängigkeiten zum Ausführen installiert werden müssen, eignen sich in ‚Go‘ geschriebene Programme wunderbar, um in Containern ausgeführt zu werden. Um eine Anwendung in einen Container zu verpacken, eignen sich Multistage Docker-Builds. Im ersten Schritt wird die Anwendung kompiliert und danach in einen Alpine-Linux Container kopiert und zum Image verpackt. Dadurch werden Imagegrößen von teils nur 50MB erreicht.

Warum mir ‚Go‘ so gut gefällt

Ich habe nun knapp ein Jahr lang mit ‚Go‘ gearbeitet und dabei nie das Gefühl gehabt, lieber mit einer anderen Sprache arbeiten zu wollen, obwohl ich nie zuvor etwas mit ‚Go‘ umgesetzt hatte. Aus der Java-Welt kommend, fiel mir der Einstieg leicht und es machte Spaß, mit ‚Go‘ zu entwickeln und am Ende kleine und schnelle Programme herauszubekommen.

Fazit

‚Go‘ ist eine leistungsstarke, effiziente und benutzerfreundliche Programmiersprache. Damit ist sie eine ausgezeichnete Wahl für moderne Software-Projekte. Die Sprache wird kontinuierlich weiterentwickelt und bietet eine aktive Community.

Ich kann nur jedem empfehlen, sich etwas in ‚Go‘ einzulesen oder es auszuprobieren. Die „Tour of Go“ (https://go.dev/tour/welcome/1) auf der offiziellen Website ist dafür bestens geeignet. Alle Features werden dort nacheinander erklärt und können direkt im Browser ausprobiert werden. Viel Spaß!

Übrigens: Möchtest du gern mal bei einem unserer teck*talks reinschauen? Folgt uns gern in den sozialen Medien. Dort geben wir immer die nächsten Termine bekannt.

instagram.com/eckcellent_it | facebook.com/eckcellentit | linkedin.com/company/18075598/ | xing.com/companies/eckcellentitgmbh


weitere Blogartikel zu teck*talks:

Teams-Tab-Plugins – Wie funktioniert das eigentlich?
Entwickeln von Desktopanwendungen mit Electron
Developer Productivity – Wie schafft man schneller mehr?


Foto von Brett Jordan auf Unsplash

Von Max-Henrik Achenbach | 6.12.2023
Max-Henrik Achenbach

Softwareentwicklung