Golang: Unterschied zwischen den Versionen
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: | |||
* 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 & | * 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. | * '''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. | * '''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 & | |||
| 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 & | |||
| Funktionen definieren, Rückgabewerte, idiomatische Fehlerbehandlung. | |||
|- | |- | ||
| Woche 4 | | Woche 4 || Pointer & Structs || Datentypen selbst strukturieren und Speicherkonzept (Zeiger) anwenden. | ||
| Pointer & | |||
| Datentypen selbst strukturieren und Speicherkonzept (Zeiger) anwenden. | |||
|- | |- | ||
| Woche 5 | | Woche 5 || Methoden & Interfaces || Methoden an Structs binden. Interfaces für flexiblen Code entwerfen. | ||
| Methoden & | |||
| Methoden an Structs binden. Interfaces für flexiblen Code entwerfen. | |||
|- | |- | ||
| Woche 6 | | Woche 6 || Pakete & Modules || Eigenes Projekt mit mehreren Dateien / Modulen strukturieren. | ||
| Pakete & | |||
| 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).
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
- A Tour of Go - Offizielles, interaktives Tutorial
- Go by Example - Exzellente Übersicht über Syntax-Konzepte anhand von Code-Snippets
- Effective Go - Best Practices der Go-Entwickler
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).