Programming in Go
Schulung & Kurs

Moderne, effiziente und skalierbare Softwareentwicklung mit Go - der Programmiersprache für Cloud-native Anwendungen.

Go ist die Programmiersprache der Cloud-Ära: Einfach, schnell und zuverlässig. In diesem intensiven Kurs erlernen Sie die Entwicklung hochperformanter Microservices, REST-APIs und CLI-Tools. Von den Grundlagen über fortgeschrittene Konzepte wie Concurrency bis hin zu produktionsreifen Deployments - Sie bauen durchgehend praktische Anwendungen und lernen Go so, wie es in der Industrie eingesetzt wird. Egal ob Sie neu in Go sind oder Ihre Kenntnisse vertiefen möchten, dieser Kurs bereitet Sie optimal auf die Entwicklung moderner, skalierbarer Softwarelösungen vor.

Kurse für Teams:

Gerne führen wir zugeschnittene Kurse für euer Team durch - vor Ort, remote oder in unseren Kursräumen.

In-House Kurs Anfragen

Kursinhalt:


– Einführung in Go
... - Warum Go? Performance, Einfachheit und Cloud-Native Entwicklung
... - Go vs. andere Sprachen: C++, Java, Python, Rust
... - Anwendungsfälle: Microservices, CLI-Tools, Systemprogrammierung
... - Go-Philosophie: Weniger ist mehr, explizit über implizit

– Sprachgrundlagen und Syntax
... - Variablen, Konstanten und Typisierung
... - Grundlegende Datentypen und Type Inference
... - Pointer und Memory Management
... - Kontrollstrukturen: if, for, switch
... - Funktionen: Definition, Parameter, Rückgabewerte, Multiple Return Values

– Datenstrukturen und Algorithmen
... - Arrays und Slices: Erstellung, Manipulation, Slicing
... - Maps: Key-Value Stores und effiziente Lookups
... - Structs: Benutzerdefinierte Datentypen
... - Interfaces: Duck Typing und Polymorphismus
... - Generics: Type-safe generische Programmierung

– Objektorientierte Programmierung in Go
... - Embedding statt Vererbung
... - Methoden und Receiver
... - Interface Composition
... - Type Assertions und Type Switches

– Nebenläufigkeit und Parallelität
... - Go-Routinen: Leichte Threads und Goroutine Scheduling
... - Channels: Sichere Kommunikation zwischen Goroutinen
... - Select Statements: Nicht-blockierende Operationen
... - Context Package: Request Cancellation und Timeouts
... - Sync Package: Mutexes, WaitGroups, Atomic Operations

– Error Handling und Robustheit
... - Das Error Interface und Fehlerbehandlung
... - Custom Error Types und Error Wrapping
... - Panic und Recover: Exception-ähnliche Mechanismen
... - Defer Statements: Resource Cleanup
... - Best Practices für robuste Fehlerbehandlung

– Testing und Qualitätssicherung
... - Unit Tests: table-driven tests, subtests
... - Benchmarking: Performance-Messungen
... - Integration Tests und Test Coverage
... - Mocking und Test Doubles
... - Fuzzing und Property-based Testing

– REST API Entwicklung
... - HTTP Server mit net/http
... - Routing: gorilla/mux, chi, gin
... - JSON Handling: encoding/json, Serialisierung
... - Middleware: Logging, CORS, Authentication
... - RESTful Design Prinzipien

– Datenbanken und Persistenz
... - SQL Datenbanken: database/sql, Prepared Statements
... - ORM Libraries: GORM, sqlx
... - NoSQL: MongoDB Driver, Redis Client
... - Connection Pooling und Transactions
... - Migrations und Schema Management

– Sicherheit und Best Practices
... - Input Validation und Sanitization
... - SQL Injection Prevention
... - Cross-Site Scripting (XSS) Protection
... - Authentication und Authorization
... - Secure Coding Guidelines für Go

– Build-System und Tooling
... - Go Modules: Dependency Management
... - Build Constraints und Cross-Compilation
... - Go Tools: fmt, vet, lint, mod
... - Profiling und Performance Analysis
... - Debugging mit Delve

– Containerization und Deployment
... - Docker Images für Go Applications
... - Multi-stage Builds und Image Optimization
... - Kubernetes Deployments
... - Configuration Management: Environment Variables, Config Files
... - Health Checks und Graceful Shutdown

– Fortgeschrittene Themen
... - Reflection und Code Generation
... - CGO: Integration mit C Libraries
... - WebAssembly und Web-Entwicklung
... - Plugin System und dynamisches Laden
... - Performance Optimization und Memory Profiling

– CLI-Anwendungen und Tools
... - cobra: Framework für CLI Applications
... - flag Package: Kommandozeilen-Argumente
... - viper: Configuration Management
... - Logging: log, zap, logrus
... - Distribution und Packaging

Du lernst diese Konzepte nicht nur kennen, sondern setzt sie auch praktisch um. Vom ersten "Hello World" bis zur produktionsreifen Anwendung bauen wir durchgehend lauffähige Programme und lernen Go so, wie es in der Praxis eingesetzt wird.


Disclaimer: Der effektive Kursinhalt kann, abhängig vom Trainer, Durchführung, Dauer und Konstellation der Teilnehmer:innen von obigen Angaben abweichen.

Ob wir es Schulung, Kurs, Workshop, Seminar oder Training nennen, wir möchten Teilnehmer/innen an ihrem Punkt abholen und mit dem nötigen praktischen Wissen ausstatten, damit sie die Technologie nach der Schulung direkt anwenden und eigenständig vertiefen können.

Ziel:

Ziel des Kurses ist es, den Teilnehmenden ein umfassendes Verständnis für die Go-Programmiersprache zu vermitteln und sie zu befähigen, eigenständig moderne, skalierbare und performante Anwendungen zu entwickeln. Die Teilnehmer lernen, Go effektiv in der Praxis einzusetzen - von der Entwicklung von Microservices und REST-APIs über die Implementierung von Concurrency-Patterns bis hin zu produktionsreifen Deployments. Nach dem Kurs können sie Go-Anwendungen entwickeln, die den Anforderungen moderner Cloud-native Systeme gerecht werden, und haben ein solides Fundament für die kontinuierliche Weiterentwicklung ihrer Go-Kenntnisse.


Dauer:

2 oder 3 Tage (Wird bei In-House Kursen individuell angepasst.)


Form:

Der Kurs ist praxisorientiert und kombiniert theoretische Grundlagen mit gezielten Übungen, die die erlernten Konzepte vertiefen.


Zielgruppe:

Der Kurs richtet sich an Entwickler, die ihre Fähigkeiten in der Softwareentwicklung erweitern und die Programmiersprache Go erlernen möchten. Er eignet sich sowohl für Anfänger mit grundlegenden Programmierkenntnissen als auch für erfahrene Entwickler, die leistungsstarke, skalierbare und moderne Anwendungen erstellen wollen.


Voraussetzungen:

Die Teilnehmer sollten grundlegende Programmierkenntnisse in einer C-verwandten Programmiersprache mitbringen. Ein grundlegendes Verständnis von Webservices (z.B. REST) wird vorausgesetzt.


Vorbereitung:

Jeder Teilnehmer erhält nach der Anmeldung einen Fragebogen zugestellt. Passend zu den Antworten senden wir ein individuelles Feedback. Nach Bedarf kann vor dem Training eine Mini-Setup Session via Remote Session durchgeführt werden (im Training inbegriffen).

In-House Kurs anfragen:

In-House Kurs Anfragen

Trage dich in die Warteliste ein für weitere öffentliche Kurs-Termine. Sobald wir genügend Personen auf der Warteliste haben, klären wir einen möglichst für alle passenden Termin ab und schalten einen neuen Termin auf. Falls du direkt mit zwei Kollegen oder Kolleginnen teilnehmen möchtest, können wir sogar direkt einen öffentlichen Kurs für euch planen.

Warteliste

(Falls ihr bereits mehr 3 Teilnehmer:innen oder mehr habt, klären wir mit euch direkt euren Wunschtermin ab und schreiben den Kurs aus.)

Mehr über Go



Go ist eine moderne, kompilierte Programmiersprache, die von Google entwickelt wurde und sich durch ihre Einfachheit, Effizienz und eingebaute Unterstützung für nebenläufige Programmierung auszeichnet. Sie kombiniert die Leistung von kompilierten Sprachen mit der Entwicklungsgeschwindigkeit interpretierter Sprachen und hat sich zur bevorzugten Sprache für Cloud-native Anwendungen, Microservices und Systemtools entwickelt.




History


Go wurde 2007 bei Google von Robert Griesemer , Rob Pike und Ken Thompson entwickelt. Die Sprache entstand aus der Frustration über die Komplexität der Softwareentwicklung bei Google, insbesondere mit C++ und Java. Das Ziel war eine Sprache zu schaffen, die die Produktivität von dynamischen Sprachen mit der Sicherheit und Performance von statisch typisierten Sprachen verbindet.


Die erste öffentliche Ankündigung erfolgte 2009, und die Sprache wurde schnell von der Community angenommen. Die Entwicklung wurde maßgeblich von Russ Cox und Ian Lance Taylor vorangetrieben, die wichtige Beiträge wie das Go Module System (eingeführt in Go 1.11) und Verbesserungen am Compiler leisteten. Go 1.0 wurde 2012 mit dem Versprechen der Abwärtskompatibilität veröffentlicht, was die breite Akzeptanz in der Industrie förderte.


Go hat die Cloud-native Bewegung maßgeblich beeinflusst und ermöglichte die Entwicklung von Technologien wie Docker und Kubernetes. Wichtige Meilensteine waren die Einführung von Generics in Go 1.18 (2022), die die Sprache deutlich vielseitiger machten, und die kontinuierliche Verbesserung der Performance und Tool-Unterstützung. Heute ist Go eine der am schnellsten wachsenden Programmiersprachen und wird von Unternehmen wie Google, Netflix, Uber, Dropbox und vielen anderen für kritische Infrastruktur eingesetzt.