Golang: Unterschied zwischen den Versionen

Aus Dokument
Zur Navigation springen Zur Suche springen
// via Wikitext Extension for VSCode
imported>Import
Version 169
(11 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
''Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).''
----


Golang ist eine Programmiersprache, die von Google entwickelt wurde. Sie wurde im Jahr 2007 veröffentlicht und ist eine statisch typisierte, kompilierte Sprache, die auf der Syntax von C basiert. Golang wurde entwickelt, um die Produktivität von Entwicklern zu steigern und die Leistung von Anwendungen zu verbessern. Die Sprache verfügt über eine einfache und klare Syntax, die leicht zu erlernen ist. Golang wird häufig für die Entwicklung von Webanwendungen, Cloud-Diensten und Systemsoftware verwendet. Sie bietet eine umfangreiche Standardbibliothek und eine aktive Entwicklergemeinschaft, die ständig neue Pakete und Frameworks entwickelt. Golang ist eine vielseitige Sprache, die für eine Vielzahl von Anwendungen geeignet ist und von Entwicklern auf der ganzen Welt geschätzt wird.
== Weblinks ==
==Installieren von Golang==
Um Golang auf Ihrem System zu installieren, müssen Sie die offizielle Website von Golang besuchen und das Installationspaket für Ihr Betriebssystem herunterladen. Golang unterstützt Windows, macOS und Linux. Nach dem Herunterladen des Installationspakets können Sie den Installationsprozess starten und Golang auf Ihrem System installieren. Nach der Installation können Sie die Golang-Befehlszeilenschnittstelle verwenden, um Programme zu erstellen, zu kompilieren und auszuführen.
==Wenn Golang bereits installiert ist, dann löschen Sie es zuerst, sonst überspringen Sie diesen Schritt.==
<pre>
sudo rm -R /usr/local/go
</pre>
== Herunterladen und Entpacken ==
<pre>
wget https://go.dev/dl/go1.23.2.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.23.2.linux-amd64.tar.gz
</pre>
== Konfigurieren Sie die Umgebungsvariablen, wenn noch nicht geschehen, sonst überspringen Sie diesen Schritt.==
<pre>
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
source ~/.bashrc
</pre>
== Überprüfen Sie die Installation ==
<pre>
go version
go env
</pre>
== Erstellung MVC-Website Projekt ==
* Ein Webframework : echo
* Ein ORM : gorm
* Ein Template Engine :  pongo2, ace
* Dependency Injection Container : fx
<pre>
go mod init myproject
go get github.com/labstack/echo/v4
go get github.com/jinzhu/gorm
go get github.com/flosch/pongo2
go get github.com/go-aah/ace
go get go.uber.org/fx
</pre>
== Verzeichnisstruktur ==
<pre>
myproject/
├── main.go
├── controllers/
│  └── user.go
├── models/
│  └── user.go
├── views/
│  ├── index.html
│  └── user.html
└── go.mod
</pre>


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 &amp; 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).
 
{| class="wikitable"
|-
! Woche
! Fokus
! Aktivitäten / Ziele
|-
| Woche 1
| Basics &amp; 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 &amp; Fehler
| Funktionen definieren, Rückgabewerte, idiomatische Fehlerbehandlung.
|-
| Woche 4
| Pointer &amp; Structs
| Datentypen selbst strukturieren und Speicherkonzept (Zeiger) anwenden.
|-
| Woche 5
| Methoden &amp; Interfaces
| Methoden an Structs binden. Interfaces für flexiblen Code entwerfen.
|-
| Woche 6
| Pakete &amp; 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 ==
 
* [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://go.dev/doc/effective_go 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).''

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).