Einstieg in Go und das Go-Ökosystem
E-Book, Deutsch, 327 Seiten
ISBN: 978-3-96088-849-9
Verlag: dpunkt.verlag
Format: EPUB
Kopierschutz: 6 - ePub Watermark
- Einführung in Go und das Go Tooling
- Fokus auf Codequalität und Testing
- praktischer Einstieg mit Übungsaufgaben und Beispielprojekten (inkl. GitHub Repository)
Sie haben schon Erfahrung mit objektorientierten Programmiersprachen und wollen sich jetzt Googles Programmiersprache Go genauer ansehen? Dann ist dieses Buch genau das Richtige für Sie! Denn Sie steigen direkt in die Besonderheiten von Go ein und lernen das Ökosystem rund um Tools und Testing kennen. Dabei liegt stets ein Fokus auf der Codequalität, damit Ihr Code von Anfang an den gängigen Code-Konventionen der Go-Community entspricht. Das alles lernen sie nicht nur mit grauer Theorie, sondern direkt an der Tatstatur mit Übungsaufgaben und Beispielprojekten.
Autoren/Hrsg.
Fachgebiete
Weitere Infos & Material
1Einleitung
1.1Ziel dieses Buches
Willkommen in diesem Buch über die Programmiersprache Go. Hier wirst Du mit praktischen Beispielen und Übungen lernen, wie Du Programme in dieser Sprache erstellt. Zu Beginn der theoretischen Kapitel stehen ein paar Fragen, die Dir bereits verraten, welche Inhalte wichtig sind. In diesem allerersten Kapitel werde ich folgende Fragen beantworten: Worum geht es in diesem Buch? Was sind die Ziele dieses Buches? Warum habe ich dieses Buch geschrieben? In den folgenden Kapiteln möchte ich Dir die Programmiersprache Go vorstellen. Wir beginnen mit der Syntax und ein wenig allgemeiner Theorie. Damit das alles nicht zu trocken wird, gibt es zwischen den theoretischen Kapiteln kleine Projekte. Am Ende des Buches weißt Du, wie Du skalierbaren und nebenläufigen Code mit Go schreibst, wie Du die Dokumentation nutzt und wie Du eigene Pakete und Tools erstellen kannst. Umfangreiche Werkzeuge erleichtern die Arbeit mit Go. Go ist eine sehr junge Programmiersprache, zumindest verglichen mit C, C++ oder Java. Die Syntax der Sprache ist überschaubar klein und sehr gut dokumentiert. Außerdem hat das Go-Team neben der Sprache auch gleich noch einen großen Werkzeugkasten angelegt, der wirklich alles beinhaltet, was für professionelles Coding notwendig ist: Dokumentation, Test-Framework, statische Codeanalyse, Race Detector und vieles mehr. Alles ist direkt bei der Go-Installation dabei und steht über eine Open-Source-Lizenz jedermann frei zur Verfügung. Go macht Spaß. Dieses Zusammenspiel aus großer Einfachheit und frei zugänglichen Tools hat mich von der Sprache vollends überzeugt. Es macht sehr viel Spaß, Programme in Go zu schreiben und diesen Spaß auch an andere weiterzugeben. Genau diesen Enthusiasmus möchte ich mit diesem Buch vermitteln. 1.2Die Geschichte von Go
Wo wurde Go entwickelt? Wer sind die Macher von Go? Was waren die Ziele bzw. welche Probleme löst Go? 2007 bei Google Die Sprache Go wurde 2007 bei Google entworfen. Die Personen hinter der Sprache sind Robert Griesemer, Rob Pike und Ken Thompson. Angeblich soll Go während des Kompilierens von C++-Programmen entstanden sein. Ganz so stimmt das nicht, doch die langen Kompilierzeiten waren ein wichtiger Auslöser für das Go-Projekt. In einem Interview hat Rob Pike einmal geschildert, dass er an einem komplexen Stück Code arbeitete und nach jeder Änderung 45 Minuten warten musste, bis das dazugehörige Programm kompiliert war. Ein weiterer Auslöser für Go war die schlechte Unterstützung für Multi-Core-Prozessoren der anderen Programmiersprachen. Denn Rob Pike hatte durch andere Projekte, z. B. Newsqueak, auf dem Gebiet der nebenläufigen Programmierung bereits einige Erfahrung gesammelt. Über die Macher Rob Pike und Ken Thompson waren bereits vor Go wichtige Namen der IT-Geschichte. Rob Pike ist z. B. einer der Köpfe hinter UTF-8 und Ken Thompson hatte seinerzeit die Sprache B entwickelt, den Vorgänger von C. Der Dritte im Bunde, Robert Griesemer, ist auch kein unbeschriebenes Blatt. Er arbeitete damals z. B. an der Optimierung der JavaScript-Engine V8. Nach der initialen Zündung für Go konnten die drei Google davon überzeugen, dass es sinnvoll ist, Go als Sprache für Cloud-Server zu entwickeln. Wenn wir uns in späteren Kapiteln an manchen Stellen fragen, warum gewisse Features so in der Standardbibliothek implementiert sind und nicht anders, dann liegt das am ursprünglichen Verwendungszweck als Serversprache für Google. Google hatte 2018 knapp 100.000 Mitarbeiter, wovon geschätzt ca. 60 % Entwickler waren. Bei einer so großen Anzahl von Entwicklern ergeben sich mehrere Probleme. Code wird in großen Organisationen nämlich mehr gelesen als geschrieben. Außerdem kommen bei Google auch laufend viele neue Entwickler ohne große Erfahrung hinzu. Deshalb sollte die neue Programmiersprache Go einfach zu erlernen und einfach zu lesen sein. Go soll schnell zu lernen sein. Die Syntax von Go ist deswegen an C und Java angelehnt. Dadurch können Entwickler mit Erfahrung in diesen Sprachen Go einfacher lernen. Um die Sprache so einfach wie möglich zu gestalten, wurde nur das Notwendigste in die Sprache aufgenommen. Go erfindet das Rad nicht neu, sondern ist wie C oder Java, aber eben auf das Notwendigste reduziert. Seit 2009 ist Go Open Source. Seit 2009 sind die Sprache und die dazugehörigen Werkzeuge Open Source und können somit kostenlos sowohl privat als auch professionell genutzt werden. Seit diesem Zeitpunkt gibt es eine aktive weltweite Community, die gemeinsam Go weiterentwickelt. 2012 erfolgte die Veröffentlichung der Version 1. Damit einher ging auch das Versprechen, dass es keine Breaking Changes mit einem neuen Release gibt. Wenn der Code unter 1.10 läuft, dann wird der auch unter 1.15 laufen. Dieses Versprechen gilt sowohl für die Syntax als auch für die Standardbibliothek. Es wird sehr ernst genommen und ist damit auch ein Garant für die Stabilität der Sprache. 1.3Installation
Wo finde ich eine Installationsanleitung für Go? Die Installation der Go-Umgebung ist abhängig vom jeweiligen System. Unter https://golang.org/doc/install sind die Installationsanleitungen und die notwendigen Vorraussetzungen für alle System aufgeführt. Eine Go-Installation beinhaltet den Compiler, das Go Tooling (siehe Kapitel 4) und die Standardbibliothek. Für macOS und Windows gibt es bereits vorgefertigte Installer, die bei der Installation alle notwendigen Umgebungsvariablen setzen. Für Linux müssen diese selbst gesetzt werden. Die dafür notwendigen Befehle befinden sich auch auf der Seite. Achtung: Version prüfen!
In diesem Buch sind die Beispiele und Projekte so aufgebaut, dass sie als Modul initialisiert werden. Go unterstützt dies jedoch erst seit der Version 1.11. Wir müssen also sicherstellen, dass auf Deinem System auch eine Version höher 1.11 installiert ist. Mit dem Befehl go version kannst Du die installierte Go-Version auf Deinem System prüfen. Sollte auf Deinem System 1.10 oder niedriger vorhanden sein, empfehle ich, eine neuere Version zu installieren. Insbesondere bei manchen konservativen Linux-Distributionen kann es sein, dass über die Paketverwaltung im Standard nur ältere Versionen von Go vorhanden sind. Lokal zum Ausprobieren ist eine veraltete Version in Ordnung. Doch spätestens, wenn wir Programme für einen produktiven Betrieb kompilieren, ist es wichtig, immer die aktuellste Version zu besitzen. 1.4Sicherheit und Patches
Was müssen wir tun, wenn wir eine Sicherheitslücke entdecken? Wie lange wird eine Go-Version mit Updates versorgt? Support ist gewährleistet. Das Thema Sicherheit ist für die produktive Nutzung ein entscheidender Aspekt. Denn sobald Sicherheitslücken entdeckt werden, müssen diese so schnell wie möglich geschlossen werden. Da z. B. Docker und Kubernetes mit Go laufen und dies so ziemlich in fast allen Cloud-Diensten eingesetzt werden, sind sehr viele Firmen daran interessiert, auftretende Sicherheitslücken so schnell wie möglich zu beheben. Deswegen sorgt das Go-Team für schnelle Updates und regelmäßige Patches. Da wir Sicherheitslücken nicht öffentlich als Bug-Report melden sollen, würden wir eine Mail an security@golang.org schicken. Der Public Key für eine PGP-Verschlüsselung findet sich auf der Webseite https://golang.org/security. Dort ist auch der gesamte weitere Prozess beschrieben. ein Jahr Support Sicherheitsrelevante Updates werden dann für die zwei aktuellsten Go-Versionen veröffentlicht. Der Support für die Version 1.12 endet mit dem Release von 1.14. Der Releasezyklus für Go ist halbjährlich, wodurch die aktuelle Version somit immer ein Jahr lang unterstützt wird. 1.5Editoren für den Go-Werkzeugkasten
Warum sollten wir für unseren Editor eine Erweiterung installieren? Wo finden wir eine Übersicht der Editoren, die Go unterstützen? Seitdem Go 2009 als Open-Source-Projekt für die Allgemeinheit freigegeben wurde, ist die Popularität der Sprache konstant gestiegen. Im letzten Quatal 2019 lag Go auf Platz 4 aller Pull-Requests von GitHub1. Damit verbunden ist eine immer bessere Unterstützung durch alle gängigen Entwicklungsumgebungen und Editoren. Einbindung der Werkzeuge Es gibt sehr gute Erweiterungen für alle gängigen Editoren wie Vim, Emacs, Eclipse oder Sublime. Eine aktuelle Liste aller Editoren mit den dazugehörigen Erweiterungen wird im Go-Wiki unter https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins aufgelistet. Wenn Du also einen bestimmten Editor favorisiert, findest Du dort Informationen bezüglich der Go-Unterstützung. Da Go selbst mit einem großen und mächtigen...