Go programmieren für Dummies - Wei-Meng Lee - E-Book

Go programmieren für Dummies E-Book

Wei-Meng Lee

0,0
24,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

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:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 274

Veröffentlichungsjahr: 2022

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Go programmieren für Dummies

Schummelseite

ERSTE SCHRITTE MIT GO IM WEB

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.

KONVERTIERUNG VON JSON-DATEN IN EIN GO-FORMAT

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/)

NUTZUNG VON GOLANG IN DOCKER

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

Über den Autor

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.

Widmung

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!

Danksagung des Autors

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!

Inhaltsverzeichnis

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

Tabellenverzeichnis

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

Illustrationsverzeichnis

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.

Orientierungspunkte

Cover

Inhaltsverzeichnis

Titelblatt

Impressum

Über den Autor

Einleitung

Fangen Sie an zu lesen

Abbildungsverzeichnis

Stichwortverzeichnis

Seitenliste

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

Einleitung

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.

Über dieses Buch

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

Törichte Annahmen über den Leser

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.

Symbole, die in diesem Buch verwendet werden

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.

Weitere Ressourcen

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.

Wie es weitergeht

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

Erste Schritte mit Go

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

Auf die Plätze, fertig, Go!

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.

Mit Go zum beruflichen Erfolg

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).

Installieren von Go auf Ihrem Computer

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.

macOS

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

Windows

Unter Windows wird die Go-Distribution im Verzeichnis C:\Go