Advanced
Go advanced notes covering key definitions, core concepts, worked examples, and practice problems.
sources:
Go is a programming language with a rich type system and ecosystem. These notes cover the language from fundamentals to advanced topics, with worked examples, practice problems, and flashcards.
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.