Zurück zum Blog

Go lernen 2026: Der schnellste Weg

Für die Go Developer Survey 2025 wurden 5.379 aktive Go-Entwickler befragt. Hier ist die Roadmap, die sich daran orientiert, was sie tatsächlich bauen, wie sie deployen und wo sie hängen bleiben.

Go lernen 2026: Der schnellste Weg

Die meisten Roadmaps für Go-Entwickler beruhen auf Bauchgefühl. Sie listen jedes Framework auf, mit dem irgendwer jemals ein package main ausgeliefert hat, und nennen das dann einen Lernweg. Diese Roadmap setzt woanders an: 5.379 aktive Go-Entwickler haben dem Go-Team Ende 2025 erzählt, wofür sie Go tatsächlich nutzen, wie sie es deployen und worüber sie stolpern. Die Roadmap weiter unten folgt diesen Daten.

Wenn du 2026 mit Go anfängst, lies das hier, bevor du drei Wochen in Gin steckst.

Kurzfassung

  • Überspring Inhalte im Stil von „Einführung ins Programmieren“. Öffne die Tour of Go und arbeite mit der Toolchain (go run, go build, go mod), bis du ein Go-Programm im Terminal bauen und ausführen kannst, ohne nachzudenken.
  • Lies Effective Go früh. 33 % der Befragten nennen „sicherstellen, dass unser Go-Code Best Practices und Idiomen folgt“ als ihre größte Frustration, noch vor jedem fehlenden Feature.
  • Baue die beiden Projekttypen, die 73 bis 74 % der aktiven Go-Entwickler tatsächlich ausliefern: Kommandozeilen-Tools und API/RPC-Services.
  • Lerne net/http und die Standardbibliothek vor jedem Framework. Ein Framework kannst du später immer noch dazunehmen, wenn ein Projekt eins braucht.
  • Danach kommt Nebenläufigkeit: Goroutines, Channels und Abbruch über context. Schreib von Anfang an Tests.
  • Das Go-Team veröffentlicht keine „offizielle“ Roadmap, also sei ruhig ein wenig skeptisch, wenn jemand behauptet, eine zu haben. Dieser Leitfaden stützt sich stattdessen auf die Umfrage, die Go-Dokumentation und die Designer der Sprache.
  • Du willst den ganzen Weg? Die interaktive Roadmap von LevelUpGo bringt dich von Hello World bis zu Anwendungen in Produktion.
flowchart LR
    A["Stage 1<br/>Toolchain + Tour of Go"] --> B["Stage 2<br/>Effective Go + Idioms"] --> C["Stage 3<br/>Concurrency"]
    D["Stage 4<br/>CLI + HTTP service"] --> E["Stage 5<br/>Testing + Standard library"] --> F["Stage 6<br/>Frameworks (only when needed)"]

Die sechs Phasen der Roadmap, mit Frameworks am Ende.

Was 5.379 Go-Entwickler dem Go-Team 2025 berichtet haben

Das Go-Team führt jedes Jahr eine Entwicklerumfrage durch. Die Ergebnisse für 2025, veröffentlicht im Januar 2026, umfassten 7.070 Antworten, von denen 5.379 die Datenbereinigung überstanden. 87 % der Befragten sind professionelle Entwickler, und 82 % nutzen Go in ihrem Hauptjob. (Quelle)

Diese Zahlen aus der Umfrage bestimmen die Reihenfolge von allem, was folgt:

SignalWertWas es bedeutet
Häufigster ProjekttypKommandozeilen-Tools (74 %)Wenn du das CLI-Kapitel überspringst, überspringst du ¾ dessen, was aktive Go-Entwickler bauen.
Zweithäufigster ProjekttypAPI/RPC-Services (73 %)Fast gleichauf mit CLI-Tools. Zusammen decken die beiden den Großteil der Go-Arbeit ab.
Deployment-ZielLinux-Container (96 %)Dein Code wird auf Linux laufen, also lerne docker build früh.
Größte FrustrationIdiome / Best Practices (33 %)Mehr Leute tun sich schwer mit „Was ist idiomatisch?“ als mit irgendeinem fehlenden Feature.
Editor-AnteilVS Code 37 %, GoLand 28 %Beides ist in Ordnung. Such dir einen aus und schreib wieder Code.
xychart-beta
    title "What Go developers build, 2025 survey"
    x-axis ["CLIs", "API services", "Libraries", "Cloud infra", "ML tools"]
    y-axis "Percent of respondents" 0 --> 100
    bar [74, 73, 49, 33, 11]

CLI-Tools und API-Services liegen mit großem Abstand vorn. Baue von beidem eins, bevor du dich für ein Framework entscheidest.

Phase 1: Die Toolchain und dein erstes Programm

Die offizielle „Getting Started“-Reihenfolge des Go-Teams ist bewusst kurz: Go installieren, Hello World ausführen, den go-Befehl verstehen, ein Modul schreiben. (Quelle)

Mit drei Dingen solltest du dich vor allem anderen vertraut machen:

  1. Der go-Befehl. go run, go build, go install, go fmt, go test, go mod. Die Flags musst du nicht auswendig lernen, aber du solltest wissen, zu welchem Befehl du greifst.
  2. Module. go mod init <name> erzeugt go.mod, und wenn du Imports hinzufügst, wird go.sum für dich aktualisiert. Workspaces mit mehreren Modulen gibt es auch, aber die brauchst du so bald nicht.
  3. A Tour of Go. Russ Cox hat sie geschrieben, und das Go-Team empfiehlt sie als erste interaktive Ressource. Mach jede Übung.

Ein erstes Programm sieht so aus:

example.gogo
package main

import "fmt"

func main() {
    fmt.Println("hello, go")
}

Führe es ohne Build-Schritt aus:

example.gogo
$ go run main.go
hello, go

Du musst keine Build-Pipeline einrichten, bevor du etwas ausführen kannst. Die meisten kleinen Go-Programme bleiben so einfach.

Phase 2: Effective Go (der Schritt, den die meisten Roadmaps auslassen)

Effective Go wird ständig zitiert, aber nur wenige lesen es früh. Das Go-Team nennt es „Pflichtlektüre für jeden neuen Go-Programmierer“, und es steht kostenlos auf der offiziellen Website.

33 % der aktiven Go-Entwickler nennen „sicherstellen, dass unser Go-Code Best Practices und Go-Idiomen folgt“ als ihre größte Frustration. Das liegt vor „fehlende Sprachfeatures“ (28 %) und „vertrauenswürdige Module“ (26 %). Die Syntax ist der leichte Teil. Schwer ist es, Code zu schreiben, den andere Go-Entwickler lesen und als ganz normales Go erkennen.

Lies es nach der Tour und vor jedem Framework. Auf rund 50 dichten Seiten behandelt es Benennung, Fehlerbehandlung, Interfaces, Nebenläufigkeit und Formatierung.

So etwas bringt es dir bei, zum Beispiel die übliche Art, einen Fehler zu behandeln:

example.gogo
file, err := os.Open(path)
if err != nil {
    return fmt.Errorf("open %s: %w", path, err)
}
defer file.Close()

Der Fehler wird sofort geprüft. Das Wrapping mit %w lässt die Fehlerkette intakt, sodass Aufrufer sie weiterhin mit errors.Is und errors.As untersuchen können. Das Aufräumen landet in einem defer statt in einem finally-Block.

Dieses Muster begegnet dir in jeder Go-Codebasis, die du öffnest. Wer Effective Go überspringt, erfindet es meist neu, und zwar schlecht. In unserem Kurs Go Idioms & Naming übst du diese Muster interaktiv, aber das Originaldokument ist kostenlos und die maßgebliche Quelle.

Phase 3: Nebenläufigkeit so, wie echter Go-Code sie nutzt

Nebenläufigkeit ist das Go-Feature, das Leute um seiner selbst willen lernen und dann falsch einsetzen. Es bleibt besser hängen, wenn du sie über die Bausteine lernst, die echter Go-Code verwendet: Goroutines, Channels und context.

Mindestens diese drei brauchst du:

  • Goroutines startest du mit go someFunc(). Sie sind keine Betriebssystem-Threads. Die Runtime plant sie auf einem kleinen Pool von Threads ein.
  • Channels sind die typisierten Leitungen, über die sich Goroutines abstimmen. make(chan T) für ungepufferte, make(chan T, n) für gepufferte Channels.
  • context.Context ist der Weg, Arbeit abzubrechen, die über Funktions- oder Goroutine-Grenzen hinweg läuft. Blockierende APIs der Standardbibliothek nehmen inzwischen einen Context entgegen.

Die häufigste Kombination verteilt Arbeit auf Goroutines, sammelt die Ergebnisse über einen Channel ein und hört vorzeitig auf, wenn der Context abgebrochen wird.

sequenceDiagram
    participant Caller
    participant Main as fetchAll
    participant G as Worker goroutines
    participant Ch as Results channel
    Caller->>Main: ctx, urls
    Main->>G: spawn one goroutine per URL
    G->>Ch: send result
    Caller-->>Main: ctx cancel signal
    Ch->>Main: collect via select
    Main->>Caller: results

Verteilen, einsammeln und beim Abbruch aufhören. Go-Server nutzen diese Form intern.

example.gogo
func fetchAll(ctx context.Context, urls []string) []result {
    out := make(chan result, len(urls))
    for _, u := range urls {
        go func(u string) {
            out <- fetch(ctx, u)
        }(u)
    }
    results := make([]result, 0, len(urls))
    for range urls {
        select {
        case r := <-out:
            results = append(results, r)
        case <-ctx.Done():
            return results
        }
    }
    return results
}

Durch das select auf ctx.Done() kann die Funktion sauber zurückkehren, wenn der Aufrufer abbricht. net/http und database/sql machen intern genau dasselbe.

Sobald sich select auf einen Context natürlich anfühlt, beherrschst du den Teil der Nebenläufigkeit, auf den alltäglicher Go-Code angewiesen ist. Concurrency Fundamentals behandelt den Rest des Modells interaktiv.

Phase 4: Ein CLI-Tool und einen HTTP-Service bauen

Das sind die beiden Projekttypen, die 73 bis 74 % der aktiven Go-Entwickler ausliefern. (Quelle) Baue von beidem eins, bevor du ein Framework anfasst.

Ein CLI-Tool. Das Paket flag ist Teil der Standardbibliothek, und viele CLI-Tools, die du schon benutzt (kubectl, docker, terraform, gh), sind in Go geschrieben. Ein minimales Tool sieht so aus:

example.gogo
package main

import (
    "flag"
    "fmt"
)

func main() {
    name := flag.String("name", "world", "who to greet")
    flag.Parse()
    fmt.Printf("hello, %s\n", *name)
}
example.gogo
$ go build -o greet . && ./greet --name=patrik
hello, patrik

Heraus kommt ein statisch gelinktes Binary, das du jemand anderem geben kannst und das dort einfach läuft. In den meisten anderen Backend-Sprachen ist dafür mehr Arbeit nötig. Der Kurs Building CLI Apps behandelt Subcommands, Exit-Codes und die Formatierung der Ausgabe.

Ein HTTP-Service. net/http ist ebenfalls Teil der Standardbibliothek, du brauchst also weder Gin noch Echo, um einen auszuliefern.

example.gogo
package main

import (
    "encoding/json"
    "net/http"
)

func main() {
    http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
        json.NewEncoder(w).Encode(map[string]string{"status": "ok"})
    })
    http.ListenAndServe(":8080", nil)
}

Das ist ein funktionierender HTTP-Server ohne Abhängigkeiten. Ergänze strukturiertes Logging, ordentliches Routing (http.ServeMux ist in Go 1.22 deutlich besser geworden) und Tests, und du hast einen API-Service.

Phase 5: Testing und Standardbibliothek vor Frameworks

go test wird mit Go ausgeliefert, und die meisten Go-Tests sind tabellengetrieben (Table-driven Tests) wie dieser hier.

example.gogo
func TestAdd(t *testing.T) {
    cases := []struct {
        name     string
        a, b, want int
    }{
        {"zero", 0, 0, 0},
        {"positive", 2, 3, 5},
        {"negative", -1, 1, 0},
    }
    for _, tc := range cases {
        t.Run(tc.name, func(t *testing.T) {
            if got := Add(tc.a, tc.b); got != tc.want {
                t.Errorf("Add(%d, %d) = %d, want %d", tc.a, tc.b, got, tc.want)
            }
        })
    }
}
example.gogo
$ go test -v ./...
=== RUN   TestAdd
=== RUN   TestAdd/zero
=== RUN   TestAdd/positive
=== RUN   TestAdd/negative
PASS

Dafür brauchst du weder eine Assertion-Library noch ein Mocking-Framework. Das offizielle Tutorial des Go-Teams hat ein Kapitel zu Fuzzing (go test -fuzz), und das testing-Paket unterstützt Benchmarks (go test -bench) direkt ab Werk. Professional Go Testing behandelt die Muster, die du brauchst, sobald deine Tests über Spielzeugbeispiele hinauswachsen.

In der Umfrage für das zweite Halbjahr 2024 war „einheitliche Coding-Standards einhalten“ mit 58 % die größte Herausforderung. Mit Tests kann ein Team Konsistenz automatisch durchsetzen, statt im Review darüber zu streiten.

Weitere Pakete der Standardbibliothek, die du gut kennen solltest, ungefähr in dieser Reihenfolge:

  • errors, fmt: Fehler mit %w wrappen, errors.Is, errors.As.
  • io, os: Reader, Writer, Umgang mit Dateien.
  • encoding/json: Struct-Tags, Encoder, Decoder.
  • context: oben schon behandelt.
  • net/http: oben schon behandelt.
  • database/sql: Connection Pooling, Prepared Statements. Nimm pgx oder sqlite später dazu.
  • log/slog: strukturiertes Logging, seit Go 1.21 dabei. Ersetze log vom ersten Tag an damit.

Phase 6: Wann (und ob) du Web-Frameworks lernen solltest

Die meisten veröffentlichten Roadmaps stellen Gin, Echo und Fiber weit nach vorn. Das Getting-Started-Material des Go-Teams verwendet selbst Gin, Effective Go und die Tutorials zur Standardbibliothek nutzen dagegen direkt net/http. Das offizielle Material widerspricht sich hier tatsächlich selbst, und wir stellen uns auf die Seite der Standardbibliothek.

Und zwar aus diesen Gründen:

  • net/http ist Teil der Runtime. Frameworks sind Abhängigkeiten, die du über Go-Upgrades hinweg pflegen musst.
  • Die Umfrage 2025 führt „vertrauenswürdige Go-Module“ als dritthäufigste Frustration (26 %). Bei der Wahl eines Frameworks stoßen neue Go-Entwickler meist zum ersten Mal darauf.
  • Die Verbesserungen an http.ServeMux in Go 1.22 haben die meisten Routing-Gründe beseitigt, aus denen man ursprünglich zu Gin gegriffen hat. Methodenbasiertes Routing und Pfadparameter sind jetzt Teil der Standardbibliothek.

Lerne ein Framework, wenn ein Projekt tatsächlich eins braucht. Gin und Echo sind in Ordnung. Fiber umgeht net/http komplett und läuft auf fasthttp, was eigene Probleme mit der Middleware-Kompatibilität mit sich bringt.

Wenn der Auftrag „eine JSON-API für ein Startup bauen“ lautet, ist net/http plus chi (ein schlanker, idiomatischer Router) eine Kombination, von der du später nicht wegmigrieren musst.

Karriere und Gehalt als Go-Entwickler: Was die Daten sagen (und was nicht)

Es gibt keinen belastbaren öffentlichen Datensatz, der Gehälter speziell für Go aufschlüsselt. Der End of Year Pay Report 2025 von Levels.fyi umfasst 245.000 Datenpunkte aus 5.000 Unternehmen und unterscheidet überhaupt nicht nach Programmiersprache. (Quelle)

Das hier gibt es:

  • Die Stack Overflow Developer Survey 2025 beziffert die Go-Nutzung auf 16,4 % aller Befragten und 17,4 % der professionellen Entwickler. Damit liegt Go auf Platz 13 unter den Programmiersprachen. (Quelle)
  • Glassdoor weist für „Go Developer“ in den USA auf Basis selbst gemeldeter Gehälter (abgerufen im April 2026) einen Durchschnitt von 133.673 USD aus. Das 25. Perzentil liegt bei 105.368 USD, das 75. bei 171.400 USD. Die Angaben sind selbst gemeldet, also solltest du sie als weniger verlässlich betrachten als Daten aus Lohnabrechnungen.
  • Laut Go Developer Survey 2025 haben 75 % der Befragten 6 oder mehr Jahre Berufserfahrung in der Softwareentwicklung. Die meisten Go-Entwickler hatten schon vor Go eine Backend-Laufbahn, und als „Go-Entwickler“ fängt kaum jemand seinen ersten Job an.

Go ist also keine Sprache, die man im Bootcamp lernt und mit der man sechs Wochen später eingestellt wird. Go ist weit verbreitet bei Unternehmen, die gut zahlen (Google, Cloudflare, Uber und Datadog setzen alle viel Go ein), und es ist eine starke zweite Kompetenz zusätzlich zu Backend-Erfahrung. Unser ehrlicher Backend-Vergleich Go vs Rust zeigt, wie die beiden bei Einstellungen abschneiden.

Für die Roadmap heißt das: Plane nicht anhand von Gehaltsdaten. Werde gut darin, Dinge zu bauen, dann kommen die Jobmöglichkeiten von selbst.

Ein Vorbehalt: Es gibt keine offizielle Roadmap des Go-Teams

Das Go-Team veröffentlicht die Tour of Go, Effective Go, die Sprachspezifikation, den Dokumentationsindex und die Entwicklerumfrage. Nichts davon ist eine Roadmap. Am nächsten kommt dem die offizielle Seite go.dev/learn, die Ressourcen nach Einsteiger, Mittelstufe und Fortgeschrittene gruppiert.

Jede „Go Developer Roadmap“, die du online findest, stammt aus der Community, diese hier eingeschlossen. Das Roadmap-Repo von Alikhll auf GitHub mit 18,4k Sternen sagt in seinem README immer noch „in 2021“. Der Go-Pfad von roadmap.sh ist gut, aber kommerziell. Die Roadmaps auf Medium schreiben größtenteils voneinander ab.

Sei also skeptisch gegenüber dem Etikett. Der Weg, der sich bewährt, ist die offizielle Tour, dann Effective Go, dann CLI-Tools und HTTP-Services, wobei du Nebenläufigkeit anhand echter Workloads lernst und nebenher Tests schreibst. Frameworks kommen zuletzt.

Häufig gestellte Fragen

Wie lange dauert es, Go-Entwickler zu werden?

Wenn du schon in einer anderen Sprache Backend-Arbeit machst, reichen drei Monate regelmäßiger Übung, um Go in Produktion auszuliefern. Fängst du bei null an, plane 9 bis 12 Monate ein und rechne damit, dass du einen Großteil dieser Zeit damit verbringst zu lernen, wie Systeme funktionieren, und weniger mit Syntax.

Brauche ich ein Informatikstudium, um Go-Entwickler zu werden?

Nein. Die Umfrage 2025 erfasst den Abschluss nicht als Einstellungskriterium. Weil Go in DevOps- und Platform-Engineering-Rollen so verbreitet ist, sind viele Go-Entwickler über Ops oder als Autodidakten eingestiegen.

Sollte ich als Einsteiger Gin/Echo/Fiber lernen?

Nicht als Erstes. Baue einen net/http-Service von Anfang bis Ende, damit du Routing, Middleware und den Request-Lebenszyklus verstehst. Nimm später ein Framework dazu, wenn dein Projekt wirklich davon profitieren würde.

Wie übe ich Go nach der Tour am besten?

Baue die beiden Dinge, die aktive Go-Entwickler ausliefern: ein CLI-Tool und einen HTTP-Service. Ergänze dann Tests und ein Dockerfile. Damit deckst du rund 80 % dessen ab, wie der Alltag in einer Junior-Rolle mit Go aussieht.

Ist Go 2026 noch gefragt?

Ja. Laut Stack Overflow 2025 liegt die Go-Nutzung unter professionellen Entwicklern bei 17,4 %, 2 Prozentpunkte mehr als 2024. Die Go Developer Survey zeigt zum siebten Mal in Folge 91 % Zufriedenheit (63 % „sehr zufrieden“).

Wie es weitergeht

Wenn du einen interaktiven Weg suchst, der den Phasen oben folgt, behandelt der Kurs Go Fundamentals von LevelUpGo Toolchain, Idiome, Nebenläufigkeit, Standardbibliothek und Testing der Reihe nach. Der kostenlose Plan enthält die Grundlagen. Pro schaltet die Projektkurse frei, in denen du die CLI-Tools und HTTP-Services baust, die diese Roadmap empfiehlt.

Schreib Go wie ein Senior Engineer

Interaktive Lektionen im Browser. Die ersten sind kostenlos.

Kostenlose Lektion testenOder kostenloses Konto erstellen