©Sergey Emelyanov 2025 | Alle Rechte vorbehalten
Go (oder Golang) ist eine Programmiersprache, die 2009 von Google entwickelt wurde. Sie ist speziell für Backend-Entwicklung und Infrastrukturprojekte optimiert. In diesem Artikel erkläre ich, warum ich mich für Go entschieden habe und welche Vor- und Nachteile die Sprache bietet.
Go kombiniert Einfachheit, Effizienz und Skalierbarkeit. Bekannte Projekte, die vollständig in Go geschrieben sind:
Projekt | Beschreibung |
---|---|
Docker | Container-Management |
Kubernetes | Orchestrierung von Containern |
Traefik | Reverse-Proxy und Load-Balancer |
Consul | Service-Mesh und Service-Discovery |
Terraform | Infrastructure-as-Code-Tool |
👉 Trending Go-Projekte auf GitHub
Go kompiliert zu einem einzigen Binärfile – ohne externe Abhängigkeiten.
# Kompilieren für Linux (64-bit)
GOOS=linux GOARCH=amd64 go build -o myapp
# Kompilieren für Windows
GOOS=windows GOARCH=amd64 go build -o myapp.exe
Vorteile:
Go nutzt Goroutinen für nebenläufige Prozesse – leichtgewichtiger als Threads.
package main
import (
"fmt"
"time"
)
func printNumbers() {
for i := 1; i <= 5; i++ {
fmt.Println(i)
time.Sleep(1 * time.Second)
}
}
func main() {
go printNumbers() // Startet eine Goroutine
go printNumbers()
time.Sleep(6 * time.Second) // Wartet, bis Goroutinen fertig sind
}
Ausgabe:
1
1
2
2
3
3
...
Go bietet mächtige Pakete in der Standardbibliothek (stdlib):
Paket | Verwendung |
---|---|
net/http | HTTP-Server/Client in 5 Zeilen Code |
encoding/json | JSON-Parsing und -Generierung |
testing | Integrierte Testframework |
Beispiel: HTTP-Server
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hallo, Welt!")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
go fmt
.type Animal struct {
Name string
}
func (a Animal) Speak() {
fmt.Println("Ich bin ein", a.Name)
}
type Dog struct {
Animal // "Einbettung" statt Vererbung
}
func main() {
d := Dog{Animal{Name: "Hund"}}
d.Speak() // Ausgabe: "Ich bin ein Hund"
}
Go verzichtet auf Vererbung und setzt auf Interfaces und Komposition.
Für schnelle MVP-Entwicklung (z. B. CRUD-Apps) ist PHP/Node.js oft pragmatischer.
Trotz offizieller Docs fehlen manchmal Praxisbeispiele.
Empfohlene Ressource: "Learning Go" von Jon Bodner.
Einsatzgebiet | Go? | Alternative |
---|---|---|
Microservices | ✅ | Node.js, Python |
CLI-Tools | ✅ | Rust, Python |
High-Performance-Systeme | ✅ | C++ |
Web-Apps mit Templates | ⚠️ | PHP, Ruby on Rails |
Data Science | ❌ | Python, R |
Go ist meine erste Wahl für:
Für Web-Apps mit komplexen Templates oder schnelle Prototypen greife ich dennoch zu PHP.
🔗 Weiterführende Links:
„Go ist wie ein Schweizer Taschenmesser – nicht für alles perfekt, aber unschlagbar in seinen Stärken.“
©Sergey Emelyanov 2025 | Alle Rechte vorbehalten