Go und Golang
Simplizität, Nebenläufigkeit und Performance für Web, Bibliotheken, Daemons und Agents
Die Programmiersprache Go wurde von Google mit Blick auf eine großflächige Cloud-Infrastruktur und effiziente Webserver entwickelt. Go ist eine moderne Programmiersprache, obwohl einige Konstrukte fehlen, die in anderen zeitgenössischen Sprachen zu finden sind. Gerade weil Go auf das Wesentliche reduziert ist, ist damit die Erstellung einfacher, zuverlässiger und effizienter Software sehr gut möglich. Die Standardbibliothek spiegelt dies wieder und bietet ausgezeichnete Netzwerk-Primitive. Die Funktionen der Netzwerkbibiliothek und ihrer Unterpakete (insbesondere net/http
) eignen sich gut zum Schreiben von Proxies, API-Servern und Webanwendungen. Last but not least: Go will den Spaß wieder in die Programmierung einbringen.
Einstieg
Die Teilnehmer lernen alle Aspekte der Sprache Go kennen, von Variablen über zusammengesetzten Typen bis hin zu Concurrency-Primitives und grundlegenden Parallelitätsmustern. Neben diesem Überblick ist die tägliche Arbeit mit Go ein zweiter Kernbestandteil – also Antworten auf Fragen wie z. B. Go-Projekte strukturiert werden, Code von Drittanbietern eingebunden wird und was die wesentlichsten Werkzeuge für die Arbeit mit Go sind. Die Themen werden dazu mit vielen kleinen praktischen Übungen vertieft. Jeder Tag enthält mindestens ein größeres Projekt, teilweise auch aufbauend auf den Projekten der vorherigen Tage.
- Woher Go kommt
- Die Go-Projektseite und Dokumente
- Installation und Einrichtung
- Ein erstes Go-Programm
- Editoren und IDEs
Sprache
Eine vorherige Exposition gegenüber Go ist nicht erforderlich, da Sprachprimitive inhaltlich abgedeckt werden.
- Paketdeklaration
- Import
- Dateikodierung
- Einstiegspunkt
Kern-Sprachelemente
- Variablen
- Konstanten
- Sichtbarkeit
- Arrays
- Slices
- Funktionen
- Kontrollfluss
- Structs / Strukturen
- Methoden
- Zeiger
- Interfaces
- Maps
- Vererbung mit Type Embedding
- Fehlerbehandlung
Täglich unterwegs mit Go
- Strukturierung von Go-Projekten
- Was
GOPATH
ist - Code importieren
- Paketstruktur
- Arbeit mit Modulen
- Code-Konventionen
- Dokumentation von Go Code
- Testen von Go Code
- Benchmarks und Profilierung
- Übersicht über die Standardbibliothek
- Auffinden und Verwendung von Code von Drittanbietern inkl. Paketmanagement
Parallelisierung
- Communicating Sequential Processes (CSP)
- Goroutinen
- Kanäle
- Die
select
-Anweisung - Muster
Werkzeuge
- Das Go-Tool
- Cross-Compilation
- Formatierung und Import
- Linters und Helfer
Arbeiten mit Daten und Netzwerkanwendungen
Die meisten Go-Anwendungen arbeiten mit strukturierten Daten in Dateien oder Datenbanken (JSON, XML, grundlegende Datenbankzugriffsmuster). In einer Reihe von Beispielen werden kleine, aber nützliche Anwendungen erstellt. Zusätzlich wird gezeigt, wie Web Services grundlegend implementiert werden und die Arbeit mit den net
- bzw. net/http
-Paketen aus der Standardbibliothek funktioniert.
- Arbeit mit Dateien
- Die wichtigsten
io
-Schnittstellen - Serialisierung und Deserialisierung von JSON
- Serialisierung und Deserialisierung von XML
- Entwicklung von Web Services mit
net/http