Advanced
Go advanced notes covering key definitions, core concepts, worked examples, and practice problems.
Go - Wyatt's Notes
Browse the library
sources:
Go is a programming language with a rich type system and ecosystem. Work through the Go sections in order, starting with Advanced and Basics and building toward Advanced, Basics, Concurrency, Intermediate and Standard Library, then check yourself with the practice problems for each topic.
Advanced
Go advanced notes covering key definitions, core concepts, worked examples, and practice problems.
Basics
Go basics notes covering key definitions, core concepts, worked examples, and practice problems.
Concurrency
Go concurrency notes covering key definitions, core concepts, worked examples, and practice problems.
Flashcards standard library
Go flashcards standard library notes covering key definitions, core concepts, worked examples, and practice problems.
Intermediate
Go intermediate notes covering key definitions, core concepts, worked examples, and practice problems.
Practice basics
Go practice basics notes covering key definitions, core concepts, worked examples, and practice problems.
Standard library
Go standard library notes covering key definitions, core concepts, worked examples, and practice problems.
Go was designed at Google for building large-scale network services and infrastructure. Its simplicity, fast compilation, and built-in concurrency make it ideal for microservices, CLI tools, and cloud-native applications. Understanding Go’s design philosophy, explicit error handling, composition over inheritance, and the “less is more” approach, produces reliable, maintainable software.
Go prioritises simplicity and practicality: In a landscape of complex languages, Go’s small spec and focused feature set let developers write clear, maintainable code. The language stays out of your way so you can focus on solving problems.
Why it matters: Go is widely used in cloud infrastructure, DevOps tooling, and backend services where reliability and performance are critical.
The key insight: Go’s standard library is remarkably comprehensive, many projects need few or no external dependencies.
Assuming Go has classes: Go uses structs and interfaces for object-oriented patterns, but there are no classes, inheritance, or constructors. Composition via struct embedding replaces inheritance. This is a deliberate design choice, not a limitation.
Not using go vet and staticcheck: Go provides built-in static analysis tools. Running go vet ./... before committing catches common mistakes (printf format errors, unreachable code, incorrect struct tags). These tools are fast and should be part of your workflow.
Goroutine leaks: Goroutines that block on channels or I/O without a way to exit will leak. Always provide a mechanism for goroutines to terminate (context cancellation, done channels, or timeout). Monitor goroutine counts in production.