monsitj - stock.adobe.com

Golang lernen für DevOps-Ingenieure: ein Erfahrungsbericht

Die meisten Sprachen bieten nicht viel proprietäre Unterstützung für Lernende. Go jedoch macht es dem interessierten Einsteiger leicht, die Grundlagen in kurzer Zeit zu erlernen.

Go entstand als Reaktion auf die Kritik an C++ und andere Sprachen und wurde 2007 von Softwareingenieuren bei Google entwickelt. Go, auch bekannt als Golang, sollte die Produktivität der Programmierer erhöhen, indem es eine bessere Programmiererfahrung bot als die damals gängigen Sprachen.

Ziel von Google war es, eine kompilierte, statisch typisierte, lesbare und schreibbare Sprache zu schaffen, die gute Leistungen erbringt – insbesondere im Bereich der Gleichzeitigkeit und für Hochleistungsnetzwerke. Go passt besser zu modernen Infrastrukturen als ältere Sprachen, die vor dem Aufkommen von Mehrkernprozessoren entwickelt wurden, und fügt mit Goroutinen und Go-Kanälen integrierte Gleichzeitigkeit hinzu.

Das Design von Go bietet auch andere Annehmlichkeiten für Entwickler, wie zum Beispiel Garbage Collection, einen integrierten Paketmanager und einfache plattformübergreifende Kompilierung. Sowohl für neue als auch für erfahrene Programmierer ist Go mit seinen vielen durchdachten, modernen Funktionen und hochwertigen Lernressourcen eine gute Wahl.

So legen Sie los

Go verfügt über eine ausführliche Dokumentation, die eine Vielzahl von Ressourcen bereitstellt, wie zum Beispiel interaktive Tutorien, Verweise auf die richtige Dokumentation und ausführliche Artikel zu bestimmten Go-Funktionen.

Eine wichtige erste Anlaufstelle ist A Tour of Go. Das interaktive Tutorial ermöglicht es den Schülern, Go-Beispiele direkt neben den Anweisungen auszuführen und so die Lektionen schnell in die Praxis umzusetzen. Das Tutorial enthält Übungen, in denen die Nutzer eine Funktion erstellen oder ein Problem lösen müssen, indem sie die in den vorangegangenen Lektionen auf die Praxis anwenden. Um den Kurs zu bestehen, müssen Nutzer ein gründlicheres Verständnis nachweisen, als nur die mitgelieferten Beispiele gelesen und ausgeführt zu haben.

Warum Go lernen?

Go bietet eine Reihe spezifischer Vorteile gegenüber anderen Programmiersprachen. Zunächst einmal unterstützen Goroutinen und Go-Kanäle die Gleichzeitigkeit in Go-Programmen. Mit einer Goroutine können Programme mehrere Funktionen im Hintergrund ausführen, während der Programmfluss normal weiterläuft. Im Vergleich zu JavaScript, das von Natur aus Funktionen parallel ausführt, ist es mit Go einfacher, nebenläufigen Code zu verwenden, zu lesen und zu schreiben, da Goroutinen explizit definieren, welche Funktionen gleichzeitig laufen sollen.

Go-Kanäle sind eine Datenstruktur, mit der Goroutinen effizient miteinander kommunizieren können, obwohl sie asynchron zueinander und zum restlichen normalen Programmablauf laufen. Go-Kanäle blockieren Operationen innerhalb einer Goroutine, bis Daten entweder gesendet oder empfangen werden. Dies ermöglicht es IT-Administratoren, Operationen in einer Goroutine im Hintergrund laufen zu lassen, bis eine Operation in einem Programm oder einer anderen Goroutine abgeschlossen ist.

Da Go eine stark typisierte Sprache ist, hat es einen Vorteil gegenüber Sprachen wie Python, die aufgrund der Unterstützung für dynamisch typisierte Variablen und Funktionen manchmal schwer zu lesen sind.

Die Abbildungen 1 und 2 vergleichen zwei Funktionen in Python und Go und zeigen die Unterschiede in der Lesbarkeit.

Abbildung 1: Eine Beispielfunktion in Python.
Abbildung 1: Eine Beispielfunktion in Python.
Abbildung 2: Eine Beispielfunktion in Go.
Abbildung 2: Eine Beispielfunktion in Go.

Python ist einfach zu schreiben, da der Programmierer die spezifischen Typen der Argumente x und y weglassen kann, aber der Aufruf der Funktionen ist etwas komplizierter. Ein Benutzer könnte addNumbers mit zwei Zeichenketten aufrufen und es wäre immer noch gültig und würde eine Verkettung der beiden angegebenen Zeichenketten zurückgeben. Dieses unbestimmte Verhalten aufgrund der Argumenttypen kann das Lesen von Python-Code verkomplizieren.

In Go müssen die Benutzer Typen für die Argumente sowie einen Rückgabetyp für die Funktion angeben. Dieser Ansatz ermöglicht ein schnelles Verständnis, dass die Argumente, die an die Funktion addNumbers in Go übergeben werden, ganze Zahlen sind.

Während einige Sprachen nur eine Programmiersprache ohne integrierte Unterstützung für die Paketverwaltung oder Testbibliotheken anbieten, ist Go viel großzügiger. Go wird mit einem Kommandozeilen-Tool geliefert, mit dem Benutzer Go-Programme erstellen, testen, paketieren und installieren können. Statt auf Tools von Drittanbietern zu setzen, um gängige Aktionen wie zum Beispiel das Herunterladen von Abhängigkeiten für ein Projekt oder das Testen von Code umzusetzen, unterstützt das Go-Kommandozeilen-Tool all diese Aufgaben nativ. Es bietet sogar einen statischen Code-Analyzer, der mit dem Unterbefehl vet ausgeführt wird, um nach potenziellen Fehlern im Code zu suchen.

Go-Beispiel

Ausgehend von einer schlecht formatierten Hauptfunktion, wie in Abbildung 3 dargestellt, werden durch die Ausführung des Befehls go fmt automatisch die Leerzeichen und Zeilenumbrüche angepasst.

Abbildung 3: Die Hauptfunktion vor dem Ausführen des go fmt-Befehls.
Abbildung 3: Die Hauptfunktion vor dem Ausführen des go fmt-Befehls.

Nach der Ausführung des go fmt-Befehls werden die Leerzeichen und Zeilen so angepasst, dass sie wie in Abbildung 4 aussehen.

Abbildung 4: Die Hauptfunktion nach dem Ausführen des ‚go fmt‘-Befehls.
Abbildung 4: Die Hauptfunktion nach dem Ausführen des ‚go fmt‘-Befehls.

Kombinieren Sie dies mit einem CI-Skript, um go fmt jedes Mal auszuführen, wenn ein Entwickler Code einspeist und so die Sauberkeit und Lesbarkeit in allen Go-Dateien eines Projekts zu gewährleisten.

Go bietet viele Annehmlichkeiten, um Entwickler beim Schreiben von Qualitätscode zu unterstützen. Wählen Sie Go für ein Projekt, bei dem Geschwindigkeit, Gleichzeitigkeit und die Benutzererfahrung für die Entwickler im Vordergrund stehen. Mit Konventionen zur Unterstützung von lesbarem Code, umfangreicher Dokumentation und einem integrierten Befehlszeilen-Tool bietet Go viele Vorteile gegenüber anderen modernen Sprachen.

Erfahren Sie mehr über IT-Berufe und Weiterbildung