24,99 €
Go ist eine der neueren Programmiersprachen, die Softwareentwickler in ihrer Werkzeugkiste haben sollten. Die Sprache wurde mit dem Ziel entwickelt, besonders gut lesbar, benutzerfreundlich und effizient zu sein, und ist eine gute Wahl für Entwickler, die Anwendungen für die Cloud erstellen. Dieses Buch zeigt Ihnen die ersten Schritte in Go. Steigen Sie ein und beginnen Sie mit dem Schreiben von Code, der Daten aus der Cloud holt und sie in die Hände der Benutzer legt.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 274
Veröffentlichungsjahr: 2022
Go programmieren für Dummies
Es gibt Situationen, in denen Go nicht auf dem lokalen Computer installiert werden kann. Vielleicht sitzen Sie ja an einem Computer Ihres Arbeitgebers und haben nur eingeschränkte Benutzerrechte. Oder Ihnen steht gerade gar kein eigener Computer zur Verfügung. Was auch immer der Grund ist: Sie brauchen nicht zu verzagen, denn es gibt verschiedene Alternativen im Internet und integrierte Entwicklungsumgebungen (IDEs), mit denen Sie Ihre ersten eigenen Go-Programme testen können. Die folgenden drei sind ziemlich cool:
Go Playground (https://play.golang.org/): Der Go Playground ist ein Webservice, der über die Server der offiziellen Go-Website betrieben wird. Er bietet eine Testumgebung mit einem Großteil der Standardbibliothek, sodass Sie Ihren Programmcode online ausprobieren können, ohne Go installieren zu müssen.
Eine besonders gern genutzte Funktion ist die Codeweitergabe. Durch Klick auf die Schaltfläche SHARE wird Ihrem Code eine feste URL zugeteilt. Auf diese Weise können Sie zum Beispiel Programmausschnitte an Mitglieder Ihres Entwicklungsteams weiterleiten oder als Lehrkraft im Rahmen von Programmierkursen Beispielcode für die Teilnehmenden bereitstellen. Der Code lässt sich in der Testumgebung bearbeiten, kompilieren und ausführen.
JDoodle Online GO Lang IDE (https://www.jdoodle.com/execute-go-online): Eine weitere IDE im Web für Go ist die JDoodle Online GO Lang IDE. Wenngleich der Go Playground sehr einfach zu benutzen ist, kann Ihr dort eingegebenes Programm nur über die Ausgabekonsole mit dem Rest der Welt interagieren. Benötigt Ihr Programm eine Benutzereingabe (zum Beispiel für die Funktion fmt.Scanln()), haben Sie also Pech. Hier kommt die JDoodle Online GO Lang IDE ins Spiel. Mit dieser Umgebung können Sie ein interaktives Go-Programm erstellen, das sowohl Eingaben entgegennehmen als auch Ausgaben zurückliefern kann. Obendrein haben Sie die Wahl, ob Ihr Programm in der Cloud oder als lokale Kopie auf Ihrem Computer gespeichert werden soll. Bei Bedarf können Sie auch eine lokale Datei in die JDoodle Online GO Lang IDE hochladen.
Die vielleicht interessanteste Funktion der JDoodle Online GO Lang IDE ist die Option zur kollaborativen Programmierung. Dadurch können mehrere Personen gleichzeitig ein Programm bearbeiten – ideal für Onlineschulungen.
Repl.it – Compiler und Interpreter für Go (https://repl.it/languages/go): Der Compiler und Interpreter für Go von Repl.it ist online verfügbar und ermöglicht es Ihnen, Dateien und Ordner mit Programmcode hochzuladen. Außerdem gibt es eine interaktive Konsole, über die Ihr Go-Programm Eingaben entgegennimmt und Ausgaben zurückliefert.
Eine recht nützliche Funktion der Repl.it-IDE ist zudem ihre Integration mit GitHub zur Versionskontrolle. Auch die interaktive Codeweitergabe wird unterstützt, um besser im Team programmieren zu können.
Beim Programmieren wird Ihnen früher oder später das JSON-Datenformat begegnen. Daten, die in dieser JavaScript Object Notation vorliegen, müssen in ein Format überführt werden, das sich in Ihrem Go-Programm leichter verarbeiten lässt. Mit den folgenden Onlinetools können Sie die JSON-Strings direkt in Go-Strukturen konvertieren:
JSON-to-Go (https://mholt.github.io/json-to-go)Transform (https://transform.tools/json-to-go)Json2Struct (http://json2struct.mervine.net/)Wenn Sie Docker verwenden, können Sie Ihre Go-Programme aus einem Docker-Container heraus ausführen.
Um ein Go-Beispielprogramm in einem Golang-Docker-Container zu installieren, geben Sie folgenden Befehl im Terminal oder in der Eingabeaufforderung ein:
$docker run golang go get -vgithub.com/golang/example/hello/…
Dieser Befehl installiert das Go-Beispielprogramm (https://github.com/golang/example/hello) in einem Golang-Container. Die Ellipse (…) repräsentiert Anweisungen zum Herunterladen, Zusammensetzen und Installieren aller Objekte im Repository (einschließlich Bibliotheken und Binärdateien).
Sie haben nun einen Golang-Container, in dem sich das Go-Beispielprogramm befindet. Als Nächstes müssen Sie den Container einem neuen Docker-Image zuordnen, sodass Sie künftig, wenn Sie dieses Programm ausführen möchten, ganz einfach einen Container aus diesem neuen Image erstellen können. Geben Sie den folgenden Befehl im Terminal oder in der Windows-Eingabeaufforderung ein:
$docker commit $(docker ps -lq) hellogo
Der Befehl docker ps -lq liefert die ID des zuletzt ausgeführten Containers. Dieser Befehl weist den Container, in dem sich das Go-Beispielprogramm befindet, einem neuen Docker-Image namens hellogo zu. Mit dem folgenden Befehl lässt sich dies überprüfen:
$docker images
REPOSITORY TAG IMAGE ID CREATED SIZEhellogo latest 2c1d28ef93cb About a minute ago 723MB
Führen Sie nun das Go-Beispielprogramm über das neu erstellte hellogo-Docker-Image aus:
$docker run hellogo hello
Hello, Go examples!
Wenn Sie diese Ausgabe sehen, wurde Ihr Go-Programm korrekt ausgeführt.
Manchmal möchten Sie Ihr Programm vielleicht in einem »Wegwerfcontainer« ausführen (zum Beispiel um nur sicherzustellen, dass das Programm überhaupt läuft). Dazu können Sie folgenden Befehl verwenden:
$docker run --rm golang sh -c "go get
github.com/golang/example/hello/… && exec hello"
Hello, Go examples!
Dieser Befehl führt einen Golang-Container aus, ruft das Go-Beispielprogramm ab und nutzt die Shell (sh) zum Ausführen (exec) des hello-Programms.
Bei Bedarf können Sie Ihr Go-Programm auch mit einer spezifischen Version von Go ausführen lassen. Der folgende Befehl führt das Go-Beispielprogramm in Version 1.5 von Go in einem Wegwerfcontainer aus:
$docker run --rm golang:1.5 sh -c "go get
github.com/golang/example/hello/… && exec hello"
Unable to find image 'golang:1.5' locally1.5: Pulling from library/golang357ea8c3d80b: Pull complete……Status: Downloaded newer image for golang:1.5Hello, Go examples!
Go programmieren für Dummies
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
© 2022 Wiley-VCH GmbH, Boschstraße 12, 69469 Weinheim, Germany
Original English language edition Go Programming Language For Dummies © 2021 by Wiley Publishing, Inc
All rights reserved including the right of reproduction in whole or in part in any form. This translation published by arrangement with John Wiley and Sons, Inc.
Copyright der englischsprachigen Originalausgabe Go Programming Language For Dummies © 2021 by Wiley Publishing, Inc.
Alle Rechte vorbehalten inklusive des Rechtes auf Reproduktion im Ganzen oder in Teilen und in jeglicher Form. Diese Übersetzung wird mit Genehmigung von John Wiley and Sons, Inc. publiziert.
Wiley, the Wiley logo, Für Dummies, the Dummies Man logo, and related trademarks and trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries. Used by permission.
Wiley, die Bezeichnung »Für Dummies«, das Dummies-Mann-Logo und darauf bezogene Gestaltungen sind Marken oder eingetragene Marken von John Wiley & Sons, Inc., USA, Deutschland und in anderen Ländern.
Das vorliegende Werk wurde sorgfältig erarbeitet. Dennoch übernehmen Autoren und Verlag für die Richtigkeit von Angaben, Hinweisen und Ratschlägen sowie eventuelle Druckfehler keine Haftung.
Print ISBN: 978-3-527-71946-4ePub ISBN: 978-3-527-83753-3
Coverfoto: © SriWidiawati – stock.adobe.comKorrektur: Matthias Delbrück, Dossenheim/Bergstraße
Wei-Meng Lee ist Gründer des Unternehmens Developer Learning Solutions, das sich auf Schulungen zu aktuellen Technologien spezialisiert hat. Nach dem Motto »Learning by Doing« legt er in seinen Kursen besonderen Wert auf anwendungsnahe Inhalte und schafft es dank seiner langjährigen Erfahrung, komplexe Technologietrends verständlich zu erklären.
Lee schreibt regelmäßig für Online- und Printpublikationen wie DevX.com, MobiForge.com oder CODE Magazine und ist Autor mehrerer Bücher.
Wenn er nicht gerade beim Programmieren die Finger über die Tastatur sausen lässt, ist Lee auch auf Konferenzen und Branchenveranstaltungen anzutreffen – von den RigaDevDays bis hin zur NDC in Oslo, London oder Kopenhagen.
Ich widme dieses Buch meiner lieben Frau Sze Wa und unserer Tochter Chloe und danke beiden aus vollem Herzen dafür, dass sie es trotz meines unregelmäßigen Terminplans mit mir aushalten und mich so wunderbar unterstützen, wenn mal wieder ein Buchabgabetermin näher rückt!
Buchprojekte finde ich immer spannend, obwohl sie mit langen Arbeitsstunden und einer ganzen Menge Stress einhergehen. Dass am Ende trotzdem ein akkurates Werk dabei herauskommt, liegt zweifelsohne an den vielen Beiträgen zahlreicher engagierter Helden und Heldinnen hinter den Kulissen. Ich möchte diese Gelegenheit nutzen, um stellvertretend einigen besonderen Personen zu danken, ohne die dieses Buch nicht möglich gewesen wäre.
Bedanken möchte ich mich bei Patrice Choong, Leiter der Fakultät für InfoComm-Technologien an der Ngee Ann Polytechnic, der es mir ermöglicht hat, den Lehrplan für die Go School und die Data School mitzugestalten. Vielen Dank für dein Vertrauen, Patrice!
Danken möchte ich auch meinen Eltern, meiner Frau und meiner Tochter für all ihre Unterstützung. Selbstlos haben sie immer wieder ihre eigenen Pläne an meinen gefüllten Terminkalender beim Schreiben dieses Buches angepasst. Tausend Dank! Ich hab euch lieb!
Cover
Titelblatt
Impressum
Über den Autor
Einleitung
Über dieses Buch
Törichte Annahmen über den Leser
Symbole, die in diesem Buch verwendet werden
Weitere Ressourcen
Wie es weitergeht
Teil I: Erste Schritte mit Go
Kapitel 1: Auf die Plätze, fertig, Go!
Mit Go zum beruflichen Erfolg
Installieren von Go auf Ihrem Computer
Verwenden einer integrierten Entwicklungsumgebung (IDE) mit Go
Ihr erstes Go-Programm
Vergleich von Go mit anderen Programmiersprachen
Kapitel 2: Datentypen
Deklarieren von Variablen
Deklarieren von Konstanten
Entfernen von ungenutzten Variablen
Verwenden von Strings
Konvertieren von Datentypen
Kapitel 3: Entscheidungsfindung
Entscheidungen mittels if/else
Verwenden der switch-Anweisung bei mehreren Bedingungen
Kapitel 4: Noch einmal und noch einmal: Programmschleifen
Durchlaufen von Schleifen mit der for-Anweisung
Iteration über einen Wertebereich
Verwenden von Sprungmarken mit der for-Schleife
Kapitel 5: Übersichtlicher Code dank Funktionen
Definieren einer Funktion
Verwenden von anonymen Funktionen
Teil II: Datenstrukturen
Kapitel 6: Datensammlungen in Arrays und Slices
Allzeit bereit mit Arrays
Strukturell flexibel mit Slices
Slicing von Wertebereichen
Kapitel 7: Logische Datenorganisation mit Structs
Definieren von Structs für Sammlungen aus Datenelementen
Erzeugen von Structs
Kopieren von Structs
Definieren von Methoden in Structs
Vergleichen von Structs
Kapitel 8: Beziehungen und Maps
Erstellen von Maps in Go
Verwenden von Structs und Maps in Go
Kapitel 9: Datencodierung mit JSON
Grundlagen von JSON
Decodieren des JSON-Formats
Codieren des JSON-Formats
Kapitel 10: Methodensignaturen mit Interfaces
Arbeiten mit Interfaces in Go
Wozu sind Interfaces gut?
Teil III: Multitasking in Go
Kapitel 11: Threading mit Goroutinen
Das Grundprinzip von Goroutinen
Verwenden von Goroutinen mit gemeinsamen Ressourcen
Synchronisieren von Goroutinen
Kapitel 12: Kommunikation zwischen Goroutinen mit Kanälen
Das Grundprinzip von Kanälen
Iterieren über Kanäle
Asynchrones Warten auf Kanäle
Verwenden von gepufferten Kanälen
Teil IV: Übersichtlicher Code
Kapitel 13: Pakete in Go
Arbeiten mit Paketen
Verwenden von Drittanbieter-Paketen
Kapitel 14: Module für Paketgruppen
Erstellen eines Moduls
Testen und Zusammensetzen eines Moduls
Veröffentlichen eines Moduls auf GitHub
Teil V: Go in Aktion
Kapitel 15: Verwendung von Web-APIs mit Go
Funktionsprinzip von Web-APIs
Abrufen der Daten von Webservices in Go
Kapitel 16: Eigene Webservices mit REST-APIs
Erstellen von Webservices mit REST-APIs
Erstellen einer REST-API in Go
Kapitel 17: Verwendung von Datenbanken
Einrichten eines MySQL-Datenbankservers
Herstellen der Verbindung zur MySQL-Datenbank in Go
Teil VI: Der Top-Ten-Teil
Kapitel 18: Zehn praktische Go-Pakete zum Erstellen von Anwendungen
color
now
go-pushbullet
goid
json2go
gojq
turtle
go-http-client
notify
gosx-notifier
Kapitel 19: Zehn nützliche Go-Ressourcen
Die offizielle Go-Website
Go by Example
Go-Tour
Häufig gestellte Fragen zu Go
Go Playground
Go Bootcamp
Effective Go
Gophercises
Tutorialspoint
Stack Overflow
Abbildungsverzeichnis
Stichwortverzeichnis
End User License Agreement
Kapitel 1
Tabelle 1.1: Umgebungsvariablen für verschiedene Betriebssysteme
Kapitel 3
Tabelle 3.1: Vergleichsoperatoren in Go
Tabelle 3.2: Logische Operatoren in Go
Kapitel 5
Tabelle 5.1: Referenzdatum zum Formatieren von Datum und Uhrzeit in Go
Tabelle 5.2: Ausgabe eines Datums basierend auf gewählter Formatierung
Kapitel 14
Tabelle 14.1: Unterverzeichnisse von $GOPATH
Kapitel 16
Tabelle 16.1: Optionen für
curl
Kapitel 1
Abbildung 1.1: Die Go-Installationsdatei steht zum Herunterladen bereit.
Abbildung 1.2: Der Go-Installationsvorgang ist abgeschlossen.
Abbildung 1.3: Visual Studio Code wird zum ersten Mal gestartet.
Abbildung 1.4: Visual Studio Code ist einsatzbereit.
Abbildung 1.5: Das Symbol
ERWEITERUNGEN
ganz unten in der Aktivitätsleiste
Abbildung 1.6: Für Visual Studio Code gibt es zahlreiche Go-Erweiterungen.
Abbildung 1.7: Zur Einführung in die Programmierung mit Go schreiben Sie ein typi...
Abbildung 1.8: Die Kommandozeile kann direkt in Visual Studio Code aufgerufen wer...
Kapitel 5
Abbildung 5.1: Beim Aufruf der Funktion
tausch()
werden die Werte von
x
und
y
in ...
Abbildung 5.2: Beim Aufruf der Funktion
tausch()
werden nun die Speicheradressen ...
Kapitel 6
Abbildung 6.1: Arrays sind Sammlungen von Datenelementen desselben Typs.
Abbildung 6.2: Ein Array mit fünf ganzzahligen Elementen hat Indexwerte von 0 bis...
Abbildung 6.3: Ein zweidimensionales Array in Go ist mit einer Tabelle vergleichb...
Abbildung 6.4: Ein dreidimensionales Array in Go ist mit einem Quader vergleichba...
Abbildung 6.5: Die Elemente eines dreidimensionalen Arrays als Quader
Abbildung 6.6: Eine Slice wird durch einen Header mit drei Feldern repräsentiert.
Abbildung 6.7: Die Kapazität einer Slice kann größer sein als ihre Länge.
Abbildung 6.8: Eine Slice wird erzeugt und mit Anfangswerten initialisiert.
Abbildung 6.9: Wenn eine Slice ihre Kapazitätsgrenze erreicht und weitere Element...
Abbildung 6.10: Die Slice
t
kann zwei weitere Elemente aufnehmen, ohne ihre Kapaz...
Abbildung 6.11: Wird eine Slice einer Variablen zugewiesen, wird dadurch eine wei...
Abbildung 6.12: Eine Modifikation von Slice
u
wirkt sich auch auf Slice
t
aus.
Abbildung 6.13: Durch das Anhängen eines Elements überschreitet Slice
t
ihre Kapa...
Abbildung 6.14: Eine Slice wird einer Slicing-Operation unterzogen und das Ergebn...
Abbildung 6.15: Die Kapazität der Slice ändert sich nach dem Slicing.
Abbildung 6.16: Ein Element wird in eine Slice eingefügt.
Abbildung 6.17: Ein Element wird aus einer Slice entfernt.
Kapitel 7
Abbildung 7.1: Die Funktion
neuerPunkt()
liefert als Rückgabewert einen Zeiger au...
Abbildung 7.2:
pt4
und
pt5
zeigen auf dieselbe Struct-Instanz.
Abbildung 7.3:
pt6
zeigt auf eine neue Instanz der
punkt
-Struktur.
Abbildung 7.4: Eine Kopie von
pt6
ist in
pt7
hinterlegt und wird von
pt8
referenz...
Kapitel 8
Abbildung 8.1: Diese Map enthält drei Paare aus Schlüssel und zugehörigem Wert.
Abbildung 8.2: Alle Elemente der Map wurden als Structs zur Slice
p
hinzugefügt.
Kapitel 9
Abbildung 9.1: Mit dem JSONLint-Tool können Sie JSON-Code validieren.
Abbildung 9.2: Der Typ von
kurse
ist
map[string] interface{}
.
Abbildung 9.3: Für den Wert von
kurse
wird der Typ
map[string] interface{}
zugesi...
Abbildung 9.4: Mehrere Go-Strukturen speichern Kundendaten.
Kapitel 11
Abbildung 11.1: Zwei Funktionen werden nebenläufig als Goroutinen ausgeführt und ...
Abbildung 11.2: Der neue Wert des Guthabens wird unter Umständen nicht rechtzeiti...
Kapitel 12
Abbildung 12.1: Jede der Goroutinen versucht, ihre Teilsumme an den Kanal zu send...
Kapitel 13
Abbildung 13.1: Das main-Paket umfasst zwei physische Dateien.
Abbildung 13.2: Die Dokumentation Ihrer Go-Pakete wird in Form von Webseiten ange...
Abbildung 13.3: Für die von Ihnen installierten Pakete gibt es eine praktische Do...
Abbildung 13.4: Zu jedem installierten Paket sind Informationen verfügbar.
Abbildung 13.5: Godoc erstellt automatisch die Dokumentation für Ihre Pakete.
Kapitel 14
Abbildung 14.1: Über die grüne Schaltfläche erstellen Sie ein neues GitHub-Reposi...
Abbildung 14.2: Vergeben Sie einen Namen für Ihr neues GitHub-Repository.
Abbildung 14.3: Sie können nun Ihre Dateien auf GitHub hochladen.
Abbildung 14.4: Ziehen Sie Ihre hochzuladenden Dateien in dieses Viereck.
Abbildung 14.5: Dateien und Ordner werden per Drag-and-drop auf GitHub hochgelade...
Abbildung 14.6: Durch Klick auf die Schaltfläche
COMMIT CHANGES
werden Ihre Änder...
Abbildung 14.7: Das Modul wurde erfolgreich veröffentlicht!
Kapitel 15
Abbildung 15.1: Ein Client kommuniziert mit einer Web-API.
Abbildung 15.2: Um die API von Fixer zu verwenden, benötigen Sie ein Benutzerkont...
Abbildung 15.3: Der JSON-Validator überprüft die von der Fixer-API gesendeten JSO...
Abbildung 15.4: Der JSON-Validator überprüft die von der Fixer-API gesendete JSON...
Abbildung 15.5: Der JSON-Validator überprüft die von der OpenWeather-API gesendet...
Abbildung 15.6: Der JSON-Validator überprüft die von der OpenWeather-API gesendet...
Kapitel 16
Abbildung 16.1: Eine HTTP-Nachricht wird an eine Web-API gesendet, die daraufhin ...
Abbildung 16.2: Die URL einer REST-API besteht aus mehreren Komponenten.
Abbildung 16.3: Mithilfe von HTTP-Methoden können Sie mit der REST-API kommunizie...
Abbildung 16.4: Mit dem gorilla/mux-Paket können Sie REST-APIs in Go erstellen.
Abbildung 16.5: Pfadvariablen werden extrahiert.
Abbildung 16.6: Die Query-Komponente enthält Schlüssel-Wert-Paare.
Kapitel 17
Abbildung 17.1: Wählen Sie die gewünschte Setup-Option.
Abbildung 17.2: Legen Sie ein sicheres Passwort für das Root-Benutzerkonto fest.
Abbildung 17.3: Per MySQL Workbench können Sie mit dem MySQL-Server interagieren.
Cover
Inhaltsverzeichnis
Titelblatt
Impressum
Über den Autor
Einleitung
Fangen Sie an zu lesen
Abbildungsverzeichnis
Stichwortverzeichnis
1
2
3
4
7
8
9
21
22
23
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
217
218
219
220
221
222
223
224
225
226
227
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
303
304
305
307
308
309
310
311
312
313
315
316
317
Wer heutzutage als Programmierer aktiv werden möchte, hat zahlreiche Programmiersprachen zur Auswahl. Zu den beliebtesten zählen unter anderem C++, C#, Go, Java, JavaScript, Python, R und Swift. Jede dieser Sprachen wurde für spezifische Problemstellungen konzipiert. Je nachdem, was Sie entwickeln wollen (Webanwendungen, Apps für Mobilgeräte oder Desktopprogramme), kann es durchaus sein, dass Sie sich mehr als eine Programmiersprache aneignen müssen.
Und warum ausgerechnet Go? Eine Antwort auf diese Frage liefert die Entstehungsgeschichte von Go. Drei Techniker bei Google waren nämlich so frustriert mit den diversen Tools, die ihnen für ihre Aufgaben zur Verfügung standen, dass sie beschlossen, eine neue Sprache zu entwickeln. Dabei setzten sie sich zum Ziel, nützliche Aspekte anderer Programmiersprachen zu kombinieren, gleichzeitig aber deren Schwachstellen zu beheben.
Go sollte vor allem die folgenden Kriterien erfüllen:
Statische Typisierung und Laufzeiteffizienz wie bei C
Einfache Lesbarkeit und Anwendbarkeit wie bei Python und JavaScript
Hohe Leistungsfähigkeit beim Netzwerk- und Multiprozessorbetrieb
Aufgrund der Probleme mit existierenden Programmiersprachen war das Google-Team gezwungen, eine gänzlich neue Sprache zu erschaffen. Möglichst effizient und schnörkellos sollte sie sein. Und Multithreading sowie Nebenläufigkeit sollte sie natürlich auch unterstützen.
Dieses Buch erläutert die Grundlagen von Go (auch bekannt als Golang) und erklärt Ihnen Schritt für Schritt, wie Sie sich diese immer beliebtere Programmiersprache zunutze machen, um schnelle und skalierbare Anwendungen zu entwickeln.
Im Buch finden Sie viele kompakte und leicht verständliche Programmbeispiele, die Sie gut nachvollziehen und selbst ausprobieren können. Jedes Kapitel stellt außerdem einen eigenständigen Themenblock dar. Sie müssen also nicht unbedingt alles der Reihe nach von der ersten bis zur letzten Seite lesen. Ein bestimmtes Thema interessiert Sie besonders? Dann blättern Sie einfach zum entsprechenden Kapitel vor.
Sollten Sie es eilig haben, können Sie getrost all jene Texte überspringen, die sich in Infokästen befinden oder durch das Techniker-Symbol gekennzeichnet sind (mehr dazu im Abschnitt Symbole, die in diesem Buch verwendet werden). Diese Textstellen bieten weiterführende Informationen, sind aber zum Verständnis nicht zwingend erforderlich.
Im gesamten Buch folge ich zudem den üblichen Konventionen der … für Dummies-Reihe:
Text, den Sie exakt übernehmen sollen, sowie Internetadressen erscheinen in
Festbreitenschrift
. Wenn Sie eine digitale Version dieses Buches auf einem Gerät mit bestehender Internetverbindung lesen, können Sie Links auch anklicken oder antippen, zum Beispiel diesen hier:
www.fuer-dummies.de
. Beachten Sie, dass sich bei manchen Links die Adresse über zwei Zeilen erstreckt. Wenn Sie die Printausgabe des Buches lesen und eine solche Webseite aufrufen möchten, geben Sie die Adresse so im Browser ein, wie sie abgedruckt ist, jedoch ohne irgendeinen Zeilenumbruch.
Wörter, die Sie eingeben sollen und die zusätzlich
kursiv
hervorgehoben sind, dienen als Platzhalter. Das heißt, Sie müssen sie jeweils durch passende Wörter ersetzen. Lautet die Anweisung beispielsweise: »Geben Sie
Ihr Passwort
ein und bestätigen Sie mit
OK
«, so müssen Sie
Ihr Passwort
durch Ihr tatsächliches Passwort ersetzen.
Programmoberflächenelemente wie Menübefehle, Optionen etc. werden in
KAPITÄLCHEN
gesetzt. Wenn Sie eine bestimmte Taste auf Ihrer Tastatur drücken sollen, wird diese ebenfalls hervorgehoben (zum Beispiel: ).
Falls die Listings im eBook-Display nicht gut lesbar sind oder nicht korrekt dargestellt werden, empfehlen wir Ihnen, sich die Beispieldateien von der Webseite des Buches herunterzuladen: www.wiley-vch.de/9783527719464
Dieses Buch richtet sich an alle, die bisher gar nicht oder nur wenig mit Go gearbeitet haben. Als Go-Neuling sind Sie hier genau richtig. Allerdings nehme ich bei meinen Erklärungen an, dass Sie folgende Vorkenntnisse besitzen:
Sie sind mit den Grundlagen der Programmierung vertraut.
Sie verstehen das Konzept von Datenstrukturen (z. B. Array, Dictionary, Struct).
Sie können mit einem Computer umgehen und die Beispiele in diesem Buch selbstständig ausprobieren.
Wie in anderen Werken aus der … für Dummies-Reihe tauchen auch in diesem Buch am Seitenrand ab und zu kleine Symbole auf, die Sie auf bestimmte Inhalte hinweisen.
Dieses Symbol markiert Informationen, die so wichtig oder nützlich sind, dass Sie sie unbedingt im Hinterstübchen behalten sollten.
Neben dem Techniker-Symbol finden Sie weiterführende Erklärungen oder Details, die Sie auch überspringen können, wenn Sie gerade keine Lust auf trockene Theorie haben.
Die Tipps neben dem Glühbirnen-Symbol bringen etwas Licht ins Dunkel und sollen Ihnen die Arbeit mit Go erleichtern.
Wenn Sie auf dieses Warnschild stoßen, lesen Sie die zugehörige Textstelle ganz genau. Sie enthält Hinweise, welche Fehler Sie vermeiden sollten, damit Sie sich beim Programmieren keine Steine in den Weg legen.
Am Anfang dieses Buches finden Sie wie üblich einige »Schummelseiten«, die Sie sich ausschneiden und griffbereit neben den Computer legen können. Und damit Sie die Programmbeispiele nicht alle mühsam per Hand abtippen müssen, stehen die Quelltexte in Dateiform unter folgender Adresse zum Herunterladen bereit: www.wiley-vch.de/ISBN9783527719464.
Befassen Sie sich zum allerersten Mal mit Go? Dann beginnen Sie am besten mit Kapitel 1 und lesen der Reihe nach die weiteren Kapitel. Wenn Sie hingegen schon Grundkenntnisse zu Go mitbringen und sofort mit praktischen Anwendungsbeispielen loslegen möchten, hält Teil V passende Inhalte für Sie parat. Unabhängig von Ihren bisherigen Erfahrungen mit Go können Sie natürlich auch jederzeit über das Inhaltsverzeichnis oder den Index gezielt nach Themen suchen, die Sie besonders interessieren.
Zu guter Letzt noch ein Rat für alle Neulinge: Probieren geht über Studieren und aus Fehlern wird man klug! Führen Sie die Programmbeispiele auf Ihrem Computer aus, nehmen Sie ruhig hier und da Änderungen vor und ärgern Sie sich nicht, wenn mal etwas nicht wie gewünscht funktioniert. Je mehr Fehler Ihnen unterlaufen, desto besser werden Sie die behandelten Themen verstehen.
Ich wünsche Ihnen viel Erfolg und Vergnügen beim Programmieren mit Go!
Teil I
IN DIESEM TEIL …
Schreiben Sie Ihr erstes Go-Programm.Lernen Sie grundlegende Datentypen in Go kennen und deklarieren Variablen und Konstanten.Programmieren Sie Entscheidungsstrukturen mithilfe von logischen Operatoren und Vergleichsoperatoren.Erstellen Sie Programmschleifen und lassen Code wiederholt ausführen.Verwenden Sie Funktionen, um Ihre Go-Programme übersichtlicher zu gestalten.Kapitel 1
IN DIESEM KAPITEL
Vorteile von Go
Go auf Ihrem Computer installieren
Mit einer IDE arbeiten
Go-Programme schreiben und ihre Funktionsweise verstehen
Go im Vergleich mit anderen Programmiersprachen
Go ist eine quelloffene Programmiersprache, die von Google erstmals im Jahr 2009 vorgestellt wurde und inzwischen immer mehr Fans findet. Mit dieser Sprache können Sie unterschiedlichste Aufgaben bewältigen und vor allem schnelle, skalierbare Anwendungen entwickeln.
Hinter Go stecken einige ziemlich clevere Köpfe, allen voran: Ken Thompson (Designer und Erfinder von Unix und C), Rob Pike (Co-Entwickler des UTF-8- und Unix-Formats) und Robert Griesemer (ein Google-Informatiker). Wenn Sie sich für technische Details interessieren und des Englischen mächtig sind, können Sie im Artikel »Go at Google: Language Design in the Service of Software Engineering« (https://talks.golang.org/2012/splash.article) nachlesen, welche Problemstellungen ursprünglich mit Go bei Google angegangen werden sollten.
In diesem Kapitel erfahren Sie, warum Go Ihrer Karriere zuträglich ist, wo diese Sprache überall eingesetzt werden kann und welche ersten Schritte Sie unternehmen müssen, um selbst mit Go zu programmieren.
Da die Website von Go unter der Adresse https://golang.org zu erreichen ist, hat sich auch die Bezeichnung Golang für diese Programmiersprache etabliert. Der offizielle Name ist jedoch Go und wird demzufolge in diesem Buch beibehalten.
Programmiersprachen gibt es heute viele, doch Go sticht aus der breiten Masse hervor. Dies hat mehrere Gründe:
Go lässt sich leicht erlernen.
Durch seine Syntax ist Go eine gut lesbare Sprache. Die objektorientierte Programmierung wird nicht unterstützt, sodass Sie sich keine Gedanken um Klassen und Vererbung und all die komplexen Merkmale dieses Programmierparadigmas machen müssen.
Bei der objektorientierten Programmierung (OOP) dreht sich alles um Datenobjekte. Es geht also primär nicht um Funktionen oder Logik, sondern um Daten. Ein wesentliches Konzept bei der OOP ist die Klasse (quasi eine Art Vorlage für Datenobjekte). Angenommen, Sie möchten Ihre Anwendung mit mehreren Schaltflächen versehen. Damit Sie den zugehörigen Programmcode nicht wiederholt für jede einzelne Schaltfläche schreiben müssen, können Sie eine Klasse für eine generische Schaltfläche definieren und diese dann zum Erstellen Ihrer gewünschten Schaltflächen nutzen. Dabei hat jede Schaltfläche ihre eigenen Attribute (Merkmale). Mithilfe von Vererbung können Sie bei der OOP mehrere Subklassen aus der generischen Schaltflächenklasse erzeugen, um unterschiedliche Arten von Schaltflächen zu generieren, beispielsweise Schaltflächen in Rechteckform oder mit abgerundeten Ecken und so weiter.
Go hat eine geringere Funktionsauswahl als andere Programmiersprachen.
Bei Go müssen Sie nicht erst überlegen, auf welche Weise Sie ein bestimmtes Problem am besten lösen – es gibt immer nur eine korrekte Vorgehensweise. Dadurch bleibt Ihre Codebasis viel übersichtlicher.
Go glänzt bei nebenläufiger Programmierung.
Durch sogenannte
Goroutinen
ist es äußerst einfach, mehrere Funktionen parallel auszuführen.
Go bietet derzeit keine Unterstützung für generische Datentypen (bei denen der tatsächliche Datentyp erst bei Verwendung angegeben werden muss), doch dies könnte sich künftig ändern, da die Sprache weiterentwickelt wird.
All das hat Sie noch nicht überzeugt? Dann habe ich ein weiteres Argument, das Sie motivieren könnte, die Programmierung mit Go zu lernen: Stack Overflow, eine Internetplattform mit Fragen und Antworten rund um das Thema Programmierung, führt jährliche Gehaltsumfragen unter Softwareentwicklern durch. Ergebnissen aus dem Jahr 2021 zufolge (siehe Stack Overflow Developer Survey 2021, https://insights.stackoverflow.com/survey/2021) landen Go-Entwickler unter den ersten zehn.
Obwohl es Go schon eine ganze Weile gibt (nämlich seit 2009), findet die Sprache erst jetzt immer mehr Zustimmung in der Softwareentwicklungsbranche, vor allem dank Cloud-Computing und Microservices. Mittlerweile kommt Go bei zahlreichen großen Unternehmen wie Dailymotion, Dropbox, Google und Uber zum Einsatz.
Die Anwendungsszenarien sind vielfältig:
Cloud-Services:
Mit Go und der Google Cloud Platform
(GCP) können Sie skalierbare Apps erstellen.
Netzwerkanwendungen:
Durch die Unterstützung für Goroutinen lassen sich mit Go verteilte Serveranwendungen und Programmierschnittstellen (APIs) entwickeln.
Webservices:
Auch skalierbare und effiziente Webservices sind mit Go kein Problem.
Befehlszeilenbasierte Anwendungen:
Da Go auf mehreren Plattformen ausführbar ist, können Sie dieselbe Codebasis gezielt für verschiedene Plattformen kompilieren (zum Beispiel für macOS und Windows).
Bestimmt sind Sie neugierig, wie Sie nun mit Go etwas auf Ihrem Computer programmieren können. Legen wir also los!
Als Erstes müssen Sie Go installieren. Am einfachsten geht dies über die Installationsseite auf der offiziellen Go-Website: https://golang.org/doc/install. Die Website erkennt automatisch Ihr gerade genutztes Betriebssystem und bietet Ihnen die passende Installationsdatei zum Herunterladen an (siehe Abbildung 1.1).
Abbildung 1.1: Die Go-Installationsdatei steht zum Herunterladen bereit.
Die Programmbeispiele in diesem Buch wurden mit Version 1.15 von Go geschrieben und getestet. Wenn Sie dieses Buch in den Händen halten, gibt es aber bestimmt schon eine neuere Go-Version. Damit Sie trotzdem alle Beispiele problemlos ausprobieren können, sollten Sie sich dieselbe Version herunterladen, die ich auch genutzt habe. Diese finden Sie hier:
macOS:
https://golang.org/dl/go1.15.8.darwin-amd64.pkg
Windows:
https://golang.org/dl/go1.15.8.windows-amd64.msi
Wenn Sie alle verfügbaren Installationsdateien für die unterstützten Plattformen (Linux, macOS und Windows) oder sogar den Quellcode von Go sehen möchten, öffnen Sie folgende Seite in Ihrem Browser: https://golang.org/dl/.
Nachdem Sie die Go-Installationsdatei heruntergeladen haben, führen Sie sie per Doppelklick aus, um den Installationsvorgang zu starten. Es öffnet sich ein Dialogfenster, in dem Sie der Endbenutzer-Lizenzvereinbarung zustimmen müssen und dann den gewünschten Speicherort für die Go-Dateien angeben können. Unter Windows wird standardmäßig der Ordner Programme beziehungsweise Programme (x86) vorgeschlagen. Damit Sie die Beispiele aus diesem Buch leicht nachvollziehen können, ändern Sie diese Einstellung und speichern Sie die Dateien stattdessen unter C:\Go. Alle anderen Standardeinstellungen können Sie beibehalten. Klicken Sie zum Schluss auf die Schaltfläche INSTALL. Go wird nun innerhalb weniger Sekunden installiert. Nach Abschluss des Vorgangs erscheint ein Bestätigungsfenster (siehe Abbildung 1.2).
Abbildung 1.2: Der Go-Installationsvorgang ist abgeschlossen.
In den folgenden Abschnitten zeige ich Ihnen, wie Sie unter macOS und Windows überprüfen können, ob Go korrekt installiert wurde.
Unter macOS wird die Go-Distribution standardmäßig im Verzeichnis /usr/local/go installiert. Außerdem fügt das Installationsprogramm automatisch das Verzeichnis /usr/local/go/bin zur PATH-Umgebungsvariablen hinzu. Dies lässt sich leicht überprüfen. Öffnen Sie dazu die Terminal-App (die Sie im Ordner Programme/Dienstprogramme finden) und geben Sie folgenden Befehl ein:
$ echo $PATH
Sie sehen nun eine Ausgabe ähnlich der folgenden, nur dass statt weimenglee Ihr eigener Benutzername erscheint (der neu hinzugefügte Go-Pfad ist fett hervorgehoben):
/Users/weimenglee/opt/anaconda3/bin:/Volumes/SSD/opt/anaconda3/condabin:/Users/weimenglee/flutter/bin:/Users/weimenglee/go/bin:/Users/weimenglee/.nvm/versions/node/v9.2.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands
Starten Sie die Terminal-App neu, nachdem Sie Go installiert haben, damit die geänderten Einstellungen korrekt übernommen werden.
Um zu testen, ob bei der Installation alles geklappt hat, geben Sie folgenden Befehl im Terminal-Fenster ein:
$ go version
Ihnen sollte nun die auf Ihrem System installierte Go-Version angezeigt werden:
go version go1.11.5 darwin/amd64
Unter Windows wird die Go-Distribution im Verzeichnis C:\Go