Start here if you're new to Go
The Go Language, from the ground up
Everything the rest of this site assumes you know — the syntax, the type system, and the idioms that make
Go Go. From zero values and the one loop to interfaces, generics and wrapped errors,
each page pairs a clear mental model with idiomatic code you can run right here.
Mark a topic “learned” on its page and watch the bars fill.
Skill map
Learned nodes light up — the glowing one is your next step. Click any node to jump in.
Basics & Syntax
The ground floor — variables and zero values, the one loop, functions with multiple returns, and pointers without the footguns.
var, :=, and const; typed vs untyped constants and iota; the numeric types with explicit conversion; and guaranteed zero values.
✦ Complete · ⏱ 8 min 2 · Beginner Control Flowif with an init statement, the single for loop in all its forms, switch without fall-through, labeled break, and defer.
✦ Complete · ⏱ 9 min 3 · Beginner FunctionsFunctions as first-class values — multiple and named returns, variadic params, closures, higher-order functions, and defer.
✦ Complete · ⏱ 9 min 4 · Beginner Pointers& and *, value vs reference semantics, nil, when a function needs a pointer to mutate, and why Go has no pointer arithmetic.
✦ Complete · ⏱ 10 minComposite Types
How Go groups data — structs, slices over a backing array, maps, and strings as UTF-8 bytes and runes.
Grouping fields into one type — literals, the zero value, nesting and embedding, struct tags, comparability, and the empty struct.
✦ Complete · ⏱ 11 min 6 · Beginner SlicesThe (ptr, len, cap) header, append and growth, slicing and the aliasing trap, copy, nil vs empty, and the slices package.
✦ Complete · ⏱ 12 min 7 · Beginner MapsGo's built-in hash table — make and literals, comma-ok, delete, random iteration, sets, nil-map panics, and the maps package.
✦ Complete · ⏱ 11 min 8 · Beginner Strings & RunesStrings are immutable UTF-8 bytes — why len counts bytes, indexing yields a byte, ranging yields runes, and strings.Builder.
✦ Complete · ⏱ 8 minMethods & Interfaces
Go's take on polymorphism — methods on any type, implicitly-satisfied interfaces, struct embedding, and generics.
Functions with a receiver — value vs pointer receivers, method sets and interface satisfaction, methods on any type, and method values.
✦ Complete · ⏱ 10 min 10 · Intermediate InterfacesImplicit satisfaction and structural typing, the (type,value) pair and dynamic dispatch, method sets, any and type switches, composition, stdlib interfaces, design, and the nil trap.
✦ Complete · ⏱ 11 min 11 · Intermediate Struct & Interface EmbeddingComposition over inheritance — promoted fields and methods, embedding structs and interfaces, overriding, and the embedded-mutex pattern.
✦ Complete · ⏱ 9 min 12 · Intermediate GenericsType parameters and constraints — any, comparable, cmp.Ordered, the ~ and union constraints, generic types, and when to use them.
✦ Complete · ⏱ 11 min 13 · Intermediate Type Assertions & SwitchesRecovering concrete types from an interface — x.(T), the comma-ok form, the type switch, and when to reach for reflection.
✦ Complete · ⏱ 8 minErrors & Idioms
The patterns that make code idiomatic — explicit errors and wrapping, defer/panic/recover, and packages and modules.
Errors are values you return and check — sentinels, wrapping with %w, and matching through the chain with errors.Is, As, and Join.
✦ Complete · ⏱ 12 min 15 · Intermediate Panic, Recover & Deferdefer schedules cleanup, panic unwinds the stack, and recover — only inside a defer — turns a panic back into an ordinary error.
✦ Complete · ⏱ 9 min 16 · Beginner Packages & ModulesPackages and visibility by case, imports and init order, modules (go.mod / go.sum), and the cmd/internal/pkg project layout.
✦ Complete · ⏱ 20 min 17 · Advanced ReflectionInspecting and modifying types and values at runtime with reflect — Type vs Kind, struct fields and tags, and the pointer/Elem rule.
✦ Complete · ⏱ 9 min🐹 Go's whole personality in one line
Composition over inheritance, interfaces satisfied implicitly, errors as ordinary values, and a tiny orthogonal feature set you can hold in your head. Learn these idioms and the patterns, concurrency and DSA tracks all click into place.