--- type: types/entity.md entity_type: technology tags: [programming-language, compiled, backend, systems] created: 2026-07-25 modified: 2026-08-29 related: [ha-core, gdeploy, plugnburn-edl, BCDModule, goresponsiveness, hacs-e3dc] sources: [] confidence: 0.95 confidence_base: 0.95 provenance: general summary: Quelloffene Programmiersprache von Google für Systemprogrammierung und Backend-Dienste, mit eingebauter Nebenläufigkeit über Goroutines und Channels. --- # Go **Typ:** Technology (Programming Language) ## Beschreibung Go (häufig als Golang bezeichnet) ist eine Open-Source-, statisch typisierte, kompilierte Programmiersprache, die von Google entwickelt wurde. Sie ist für die Erstellung einfacher, schneller und zuverlässiger Software konzipiert. Go ist besonders gut geeignet für Systemprogrammierung, Backend-Services und nebenläufige Anwendungen aufgrund seiner integrierten Unterstützung für Nebenläufigkeit (Goroutines und Channels), schnelle Kompilierung und effiziente Laufzeit. ## Kerndaten - **Typ:** Programmiersprache - **Paradigma:** Prozedural, nebenläufig - **Erste Erscheinung:** 2009 - **Entworfen von:** Robert Griesemer, Rob Pike, Ken Thompson bei Google - **Lizenz:** BSD-ähnlich - **Website:** https://golang.org - **Aktuelle stabile Version:** 1.22+ (Stand 2026) ## Beziehungen - **Verwendet von:** [[ha-core]], [[gdeploy]], [[plugnburn-edl]], [[BCDModule]], [[goresponsiveness]], [[hacs-e3dc]] - **Konkurriert mit:** Rust, Java, C++, Python (für Backend) - **Beeinflusst von:** C, Pascal, Oberon - **Beeinflusst:** Viele moderne Sprachen ## Schlüsselfunktionen ### Sprachfunktionen - **Statische Typisierung** - Typsicherheit mit Typinferenz - **Nebenläufigkeit** - Goroutines (leichte Threads) und Channels - **Garbage Collection** - Automatische Speicherverwaltung - **Interfaces** - Implizite Implementierung (Duck Typing) - **Pakete** - Modulare Organisation - **Tooling** - Built-in Build-, Test-, Format- und Dokumentations-Tools ### Leistung - Schnelle Kompilierung - Effiziente Ausführung (native Binärdateien) - Niedrige Latenz - Gut für CPU-intensive und I/O-intensive Aufgaben ### Ökosystem - **Pakerverwaltung:** Go Modules (seit Go 1.11) - **Standardbibliothek:** Umfangreich und gut konzipiert - **Pakete von Drittanbietern:** Wachsendes Ökosystem auf pkg.go.dev ## Anwendungsfälle Basierend auf der Repository-Struktur wird Go verwendet für: 1. **Hausautomation** - [[ha-core]] 2. **Deployment-Tools** - [[gdeploy]] 3. **EDL-bezogene Tools** - [[plugnburn-edl]], [[andybalholm-edl]] 4. **Modulsysteme** - [[BCDModule]] 6. **Performance-Testing** - [[goresponsiveness]] ## Vor- und Nachteile ### Vorteile - Schnelle Kompilierung und Ausführung - Exzellente Standardbibliothek - Integrierte Unterstützung für Nebenläufigkeit - Einfache Syntax - Starkes Tooling-Ökosystem - Plattformübergreifende Kompilierung - Gut für Microservices und CLI-Tools ### Nachteile - Weniger flexibel als dynamisch typisierte Sprachen - Keine Generics (bis Go 1.18) - Error Handling kann verbose sein - Begrenzte Meta-Programmierungsfunktionen ## Lernressourcen - **Offiziell:** https://golang.org/doc - **Tour:** https://go.dev/tour/ - **Effective Go:** https://go.dev/doc/effective_go - **Blog:** https://go.dev/blog/ ## Toolchain - `go build` - Pakete und Abhängigkeiten kompilieren - `go test` - Tests ausführen - `go fmt` - Code formatieren - `go mod` - Modul-Verwaltung - `go doc` - Dokumentation - `go run` - Kompilieren und ausführen - `godep` - Abhängigkeits-Tool (älter) ## Best Practices 1. **Formatierung:** Immer `go fmt` verwenden 2. **Testen:** Tests mit dem Testing-Paket schreiben 3. **Error Handling:** Explizite Fehlerprüfung 4. **Nebenläufigkeit:** Channels für Kommunikation verwenden 5. **Interfaces:** Kleine, fokussierte Interfaces entwerfen ## Historie - [2009] - Erste öffentliche Veröffentlichung - [2012] - Go 1.0 veröffentlicht - [2015] - Go 1.5 mit Self-Hosting-Compiler - [2018] - Go 1.11 mit Modulen - [2020] - Go 1.15 mit verbessertem Linker - [2022] - Go 1.18 mit Generics - [2026-07-25] - Entity-Seite erstellt ## Siehe auch - [[ha-core]] - Verwendet Go für E3DC-Integration - [[gdeploy]] - Go-basiertes Deployment-Tool - [[Rust]] - Alternative Systemsprache - [[Python]] - Alternative Skriptsprache - Systems Programming concept