Golang

Weblinks

  • Todd McLeod Learn How To Code: Google's Go Programming Language
  • Jens Schendel Einführung in Golang für Anfänger

Webprogrammieren

  • Trevor Sawler Building Modern Web Apps
  • Todd McLeod Web Development w/ Go
  • Jens Schendel Schnelle & sichere Webapps

Lernpfad

Der folgende Lernpfad ist darauf ausgelegt, Go-Programmierung von den Grundlagen bis zu fortgeschrittenen Konzepten strukturiert zu erlernen.

Modul 1: Grundlagen und Einrichtung

  • Entwicklungsumgebung: Installation von Go (Windows, macOS, Linux), Einrichten des `GOPATH` bzw. Go Modules, Installation der IDE (z.B. VS Code mit Go-Erweiterung oder GoLand).
  • Erstes Programm: `Hello World` schreiben, kompilieren (`go build`) und ausführen (`go run`).
  • Syntax und Basics: Variablen, Datentypen (Strings, Integers, Floats, Booleans), Konstanten, Operatoren.
  • Kontrollstrukturen: `if/else`, `switch`, `for`-Schleifen (die einzige Schleife in Go).

Modul 2: Komplexe Datentypen und Funktionen

  • Datenstrukturen: Arrays, Slices und Maps (Erstellung, Iteration, Modifikation).
  • Funktionen: Deklaration, Parameterübergabe, mehrfache Rückgabewerte, benannte Rückgabewerte.
  • Verteilen und Organisieren: Pakete (Packages) verstehen, Importieren, Exportieren (Groß-/Kleinschreibung), Go Modules (`go mod init`, `go mod tidy`).
  • Fehlerbehandlung: Das `error`-Interface, grundlegende Fehlerprüfung (Idiomatisches Go ohne Exceptions).

Modul 3: Objektorientierte Konzepte und Interfaces

  • Structs: Definition eigener Typen, Instanziierung.
  • Methoden: Receiver-Funktionen (Value Receiver vs. Pointer Receiver).
  • Interfaces: Duck-Typing in Go, Implementierung von Schnittstellen, leeres Interface `interface{}` und Type Assertions.
  • Pointers (Zeiger): Grundlagen der Speicheradressierung, Call-by-Value vs. Call-by-Reference.

Modul 4: Nebenläufigkeit (Concurrency) in Go

  • Goroutines: Leichtgewichtige Threads starten (`go`-Keyword).
  • Channels: Kommunikation zwischen Goroutines (gepuffert und ungepuffert).
  • WaitGroups und Mutexe: Synchronisierung (`sync`-Package).
  • Select Statement: Auswahl zwischen mehreren Channel-Operationen.

Modul 5: Fortgeschrittene Themen und Best Practices

  • Standardbibliothek intensiv: I/O-Operationen, Dateiverarbeitung (`os`, `io`), HTTP-Server (`net/http`), JSON-Verarbeitung (`encoding/json`).
  • Testing: Unit-Tests schreiben mit dem `testing`-Package, Table-Driven Tests, Mocking.
  • Generics (Go 1.18+): Typparameter verwenden.
  • Context-Package: Lebenszyklen, Timeouts und Abbruchsignale verwalten.

Lernplan (12-Wochen-Plan)

Ein exemplarischer Wochenplan für das berufsbegleitende oder nebenberufliche Lernen (ca. 5-8 Stunden pro Woche).

| Woche | Fokus | Aktivitäten / Ziele | |----------|------------------------|-------------------------------------------------------------------------------| | Woche 1 | Basics & Setup | Go installieren, IDE einrichten, Hello World, Variablen und Schleifen lernen. | | Woche 2 | Datenstrukturen | Slices, Arrays und Maps verstehen und anwenden. Kurze Übungen. | | Woche 3 | Funktionen & Fehler | Funktionen definieren, Rückgabewerte, idiomatische Fehlerbehandlung. | | Woche 4 | Pointer & Structs | Datentypen selbst strukturieren und Speicherkonzept (Zeiger) anwenden. | | Woche 5 | Methoden & Interfaces | Methoden an Structs binden. Interfaces für flexiblen Code entwerfen. | | Woche 6 | Pakete & Modules | Eigenes Projekt mit mehreren Dateien / Modulen strukturieren. | | Woche 7 | Mini-Projekt 1 | z.B. eine kleine CLI-Anwendung (Todo-Liste) bauen. | | Woche 8 | Nebenläufigkeit Teil 1 | Goroutines und einfache Channels verstehen. | | Woche 9 | Nebenläufigkeit Teil 2 | Complex Channels, `sync.WaitGroup`, `select`-Statement. | | Woche 10 | Standard Library | Dateisystemoperationen, HTTP, und JSON parsen. | | Woche 11 | Testing | Eigene Unit-Tests und Table-Driven Tests schreiben. | | Woche 12 | Abschlussprojekt | z.B. eine REST-API oder ein asynchroner Worker (Webscraper) bauen. |

Ressourcen zur Vertiefung


Kategorien: Keine
Zuletzt aktualisiert am 03.03.2026 18:30