Go Fundamentals
Begin with Go's story, then master the core language — types, functions, structs, interfaces.
Origins at Google (2007–2009)
Go was conceived in September 2007 by Robert Griesemer, Rob Pike, and Ken Thomps...
Public Release — Go 1.0 (2012)
Go was open-sourced in November 2009. On March 28, 2012, Go 1.0 was released — t...
Growth and Ecosystem (2012–2017)
Between Go 1.0 and Go 1.9, the language itself changed little (by design) but th...
Go Modules — Dependency Management (Go 1.11, 2018)
Go's original dependency model relied on `GOPATH` — all Go code lived in one wor...
Generics — Go 1.18 (2022)
Go 1.18, released March 2022, added generics (officially called "type parameters...
Modern Go — 1.21 to 1.24 (2023–2025)
Go 1.21 (August 2023) added the first built-in functions for slices and maps as ...
Why Go Succeeded
Go succeeded because it made opinionated choices that most languages avoid: one ...
Variables and Type Inference
Go is statically typed but uses type inference to eliminate boilerplate. The `:=...
Arrays and Slices
An array in Go has a fixed length that is part of its type: `[3]int` and `[4]int...
Error Handling
Go uses explicit error return values instead of exceptions. The `error` interfac...
Constants and iota
Constants are immutable values fixed at compile time, declared with `const`. The...
Type Assertions
A type assertion extracts the concrete value stored inside an interface. `v, ok ...
Type Switches
A type switch is a control structure that branches on the dynamic type of an int...
Variadic Functions
A variadic function accepts a variable number of trailing arguments of the same ...
Named Types and Type Definitions
`type Celsius float64` creates a new named type distinct from its underlying typ...
init Functions
`init` is a special function that runs automatically before `main`, after all pa...
The Blank Identifier
The blank identifier `_` is a write-only placeholder that discards a value. Go r...
Panic and Recover
`panic` stops normal execution and begins unwinding the stack, running deferred ...