b137359b90
Files changed: - kb/concepts/Denylist over Allowlist.md - kb/concepts/LLM Wiki Pattern.md - kb/concepts/SSD TRIM.md - kb/entities/people/E3DC GmbH.md - kb/entities/people/Vannevar Bush.md - kb/entities/projects/ha-core.md - kb/entities/projects/hacs-integration-blueprint.md - kb/entities/systems/AGENTS.md.md - kb/entities/systems/CLAUDE.md.md - kb/entities/systems/E3DC.md - kb/entities/systems/ENVIRONMENT.md.md - kb/entities/systems/Memex.md - kb/entities/systems/Tolkien Gateway.md - kb/entities/technologies/Arch Linux.md - kb/entities/technologies/Disk Encryption.md - kb/entities/technologies/Docker.md - kb/entities/technologies/Gitea Actions.md - kb/entities/technologies/Gitea.md - kb/entities/technologies/Go.md - kb/entities/technologies/Home Assistant.md - kb/entities/technologies/Kernel PM Governors.md - kb/entities/technologies/LVM.md - kb/entities/technologies/Linux Kernel.md - kb/entities/technologies/MQTT.md - kb/entities/technologies/OPC UA.md - kb/entities/technologies/Python.md - kb/entities/technologies/Rust.md - kb/entities/technologies/Wine GE.md - kb/entities/technologies/Wine-Staging.md - kb/entities/technologies/acpi-cpufreq.md - kb/entities/technologies/amd-pstate.md - kb/entities/technologies/iii Engine.md - kb/entities/tools/AUR.md - kb/entities/tools/Act Runner.md - kb/entities/tools/Agent Memory.md - kb/entities/tools/Aura.md - kb/entities/tools/Bottles.md - kb/entities/tools/ChatGPT.md - kb/entities/tools/Claude Code.md - kb/entities/tools/Codex CLI.md - kb/entities/tools/Dataview.md - kb/entities/tools/GPG.md - kb/entities/tools/GitHub Copilot.md - kb/entities/tools/Gitea MCP Server.md - kb/entities/tools/Lutris.md - kb/entities/tools/Marp.md - kb/entities/tools/Mistral Vibe.md - kb/entities/tools/NotebookLM.md - kb/entities/tools/Obsidian Web Clipper.md - kb/entities/tools/Obsidian.md - kb/entities/tools/OpenAI Codex.md - kb/entities/tools/OpenCode.md - kb/entities/tools/Pi.md - kb/entities/tools/Proton.md - kb/entities/tools/Wine.md - kb/entities/tools/awesome-llm-wiki.md - kb/entities/tools/farzaa gist.md - kb/entities/tools/gdeploy.md - kb/entities/tools/makepkg.md - kb/entities/tools/pascalandy schema.md - kb/entities/tools/qmd.md - kb/entities/tools/wikitool.md - kb/log.md - work/link-taxonomy-migration/glossary.md
153 lines
4.6 KiB
Markdown
153 lines
4.6 KiB
Markdown
---
|
|
type: types/entity.md
|
|
entity_type: technology
|
|
tags: [programming-language, compiled, backend, systems]
|
|
created: 2026-07-25
|
|
modified: 2026-08-29
|
|
related:
|
|
- required-by: ha-core
|
|
- required-by: gdeploy
|
|
- required-by: plugnburn-edl
|
|
- required-by: BCDModule
|
|
- required-by: goresponsiveness
|
|
- required-by: 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
|
|
- Alternative Systemsprache
|
|
- Alternative Skriptsprache
|
|
- Systems Programming concept
|
|
|
|
<!-- wikitool:links -->
|
|
## Beziehungen
|
|
|
|
- **required-by:** [[ha-core]]
|
|
- **required-by:** [[gdeploy]]
|
|
- **required-by:** [[plugnburn-edl]]
|
|
- **required-by:** [[BCDModule]]
|
|
- **required-by:** [[goresponsiveness]]
|
|
- **required-by:** [[hacs-e3dc]]
|
|
<!-- /wikitool:links -->
|