Golang: Unterschied zwischen den Versionen

Aus Dokument
Zur Navigation springen Zur Suche springen
imported>Import
Version 169
Keine Bearbeitungszusammenfassung
 
Zeile 2: Zeile 2:
----
----


== Weblinks ==
==Weblinks==
 
* Todd McLeod Learn How To Code: Google's Go Programming Language
* Todd McLeod Learn How To Code: Google’s Go Programming Language
* Jens Schendel Einführung in Golang für Anfänger
* Jens Schendel Einführung in Golang für Anfänger
 
==Webprogrammieren==
== Webprogrammieren ==
 
* Trevor Sawler Building Modern Web Apps
* Trevor Sawler Building Modern Web Apps
* Todd McLeod Web Development w/ Go
* Todd McLeod Web Development w/ Go
* Jens Schendel Schnelle & sichere Webapps
* Jens Schendel Schnelle & sichere Webapps


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


=== Modul 1: Grundlagen und Einrichtung ===
=== 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).
* '''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`).
* '''Erstes Programm:''' `Hello World` schreiben, kompilieren (`go build`) und ausführen (`go run`).
Zeile 25: Zeile 20:


=== Modul 2: Komplexe Datentypen und Funktionen ===
=== Modul 2: Komplexe Datentypen und Funktionen ===
* '''Datenstrukturen:''' Arrays, Slices und Maps (Erstellung, Iteration, Modifikation).
* '''Datenstrukturen:''' Arrays, Slices und Maps (Erstellung, Iteration, Modifikation).
* '''Funktionen:''' Deklaration, Parameterübergabe, mehrfache Rückgabewerte, benannte Rückgabewerte.
* '''Funktionen:''' Deklaration, Parameterübergabe, mehrfache Rückgabewerte, benannte Rückgabewerte.
Zeile 32: Zeile 26:


=== Modul 3: Objektorientierte Konzepte und Interfaces ===
=== Modul 3: Objektorientierte Konzepte und Interfaces ===
* '''Structs:''' Definition eigener Typen, Instanziierung.
* '''Structs:''' Definition eigener Typen, Instanziierung.
* '''Methoden:''' Receiver-Funktionen (Value Receiver vs. Pointer Receiver).
* '''Methoden:''' Receiver-Funktionen (Value Receiver vs. Pointer Receiver).
* '''Interfaces:''' Duck-Typing in Go, Implementierung von Schnittstellen, leeres Interface `interface{}` und Type Assertions.
* '''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.
* '''Pointers (Zeiger):''' Grundlagen der Speicheradressierung, Call-by-Value vs. Call-by-Reference.


=== Modul 4: Nebenläufigkeit (Concurrency) in Go ===
=== Modul 4: Nebenläufigkeit (Concurrency) in Go ===
* '''Goroutines:''' Leichtgewichtige Threads starten (`go`-Keyword).
* '''Goroutines:''' Leichtgewichtige Threads starten (`go`-Keyword).
* '''Channels:''' Kommunikation zwischen Goroutines (gepuffert und ungepuffert).
* '''Channels:''' Kommunikation zwischen Goroutines (gepuffert und ungepuffert).
Zeile 46: Zeile 38:


=== Modul 5: Fortgeschrittene Themen und Best Practices ===
=== Modul 5: Fortgeschrittene Themen und Best Practices ===
* '''Standardbibliothek intensiv:''' I/O-Operationen, Dateiverarbeitung (`os`, `io`), HTTP-Server (`net/http`), JSON-Verarbeitung (`encoding/json`).
* '''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.
* '''Testing:''' Unit-Tests schreiben mit dem `testing`-Package, Table-Driven Tests, Mocking.
Zeile 53: Zeile 44:


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


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


== Ressourcen zur Vertiefung ==
== Ressourcen zur Vertiefung ==
* [https://go.dev/tour/ A Tour of Go] - Offizielles, interaktives Tutorial
* [https://go.dev/tour/ A Tour of Go] - Offizielles, interaktives Tutorial
* [https://gobyexample.com/ Go by Example] - Exzellente Übersicht über Syntax-Konzepte anhand von Code-Snippets
* [https://gobyexample.com/ Go by Example] - Exzellente Übersicht über Syntax-Konzepte anhand von Code-Snippets

Aktuelle Version vom 3. März 2026, 18:30 Uhr

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).


  • 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


Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).