Introduction
Go (Golang) is a statically typed, compiled language designed at Google for simplicity, performance, and concurrency. It’s the language behind Docker, Kubernetes, Terraform, and many cloud-native tools. This guide covers the best resources for learning Go at every level. See Go Installation Guide, Go Ecosystem Overview, Go Best Practices for more context.
Official Resources (Start Here)
A Tour of Go
tour.golang.org — The official interactive introduction. Runs Go code in your browser. Covers syntax, types, functions, methods, interfaces, and concurrency. Start here if you’re new to Go.
Effective Go
golang.org/doc/effective_go — The official guide to writing idiomatic Go. Covers naming conventions, control structures, data structures, interfaces, concurrency, and error handling. Essential reading after the Tour.
Go Documentation
- pkg.go.dev — Official package documentation (replaced godoc.org)
- Go Blog — Official blog with deep dives on language features
- Go Spec — The language specification (reference, not tutorial)
- Go FAQ — Answers to common questions
Go Playground
play.golang.org — Run Go code in the browser. Share snippets with a URL. Great for quick experiments and sharing examples.
Books
The Go Programming Language (Donovan & Kernighan)
gopl.io — The definitive Go book, co-authored by Brian Kernighan (of K&R C fame). Comprehensive coverage of the language with excellent exercises. The best book for serious Go learners.
Learning Go (Jon Bodner)
Focuses on idiomatic Go — how to write Go the way experienced Go developers do. Covers modules, testing, generics, and modern Go practices.
Go in Action (Kennedy, Ketelsen, St. Martin)
Practical, project-based approach. Good for developers coming from other languages.
100 Go Mistakes and How to Avoid Them (Teiva Harsanyi)
100go.co — Covers the most common mistakes Go developers make, with explanations and fixes. Excellent for intermediate developers.
Online Courses
Go by Example
gobyexample.com — Annotated example programs covering every major Go feature. No fluff — just code with explanations. Best quick reference for syntax and patterns.
Gophercises
gophercises.com — Free coding exercises with video solutions. Builds real programs (quiz app, URL shortener, etc.). Great for practice.
Exercism Go Track
exercism.org/tracks/go — Practice exercises with mentorship from experienced Go developers.
Udemy: Go: The Complete Developer’s Guide
Comprehensive video course covering Go from basics to advanced topics including concurrency and testing.
Blogs and Articles
Dave Cheney’s Blog
dave.cheney.net — Deep dives into Go internals, performance, and best practices. Articles like “Practical Go” and “High Performance Go Workshop” are essential reading.
Must-read articles:
- Practical Go: Real world advice for writing maintainable Go programs
- Go’s Declaration Syntax
- Errors are values
The Go Blog
go.dev/blog — Official blog with articles on new features, best practices, and case studies.
Key articles:
Ardan Labs Blog
ardanlabs.com/blog — Advanced Go content on concurrency, memory management, and performance.
Video Resources
JustForFunc (YouTube)
youtube.com/c/JustForFunc — Francesc Campoy’s channel with Go tips, tricks, and deep dives. Excellent production quality.
GopherCon Talks
youtube.com/c/GopherAcademy — Conference talks from GopherCon. Many are available free on YouTube.
Notable talks:
- Concurrency Is Not Parallelism — Rob Pike
- Advanced Go Concurrency Patterns — Sameer Ajmani
- Understanding nil — Francesc Campoy
Community Resources
Awesome Go
awesome-go.com — Curated list of Go frameworks, libraries, and tools. Organized by category (web, database, testing, etc.).
r/golang
reddit.com/r/golang — Active community for questions, news, and discussion.
Gopher Slack
invite.slack.golangbridge.org — Official Go community Slack with channels for beginners, jobs, and specific topics.
Go Forum
forum.golangbridge.org — Official Go discussion forum.
Learning Path by Level
Beginner (0-3 months)
- Complete A Tour of Go
- Read Effective Go
- Work through Go by Example
- Build a small CLI tool or web server
Intermediate (3-12 months)
- Read The Go Programming Language (Donovan & Kernighan)
- Complete Gophercises
- Study Go concurrency patterns (goroutines, channels, select)
- Learn Go modules and dependency management
- Write tests with the
testingpackage
Advanced (12+ months)
- Read 100 Go Mistakes and How to Avoid Them
- Study Go internals (scheduler, garbage collector, memory model)
- Read Dave Cheney’s advanced articles
- Contribute to open source Go projects
- Watch GopherCon talks on advanced topics
Key Go Concepts to Master
// 1. Interfaces — Go's polymorphism
type Writer interface {
Write(p []byte) (n int, err error)
}
// 2. Goroutines and channels — Go's concurrency
go func() { /* runs concurrently */ }()
ch := make(chan int, 10)
// 3. Error handling — explicit, no exceptions
result, err := someFunction()
if err != nil {
return fmt.Errorf("context: %w", err)
}
// 4. Defer — cleanup guaranteed
defer file.Close()
// 5. Struct embedding — Go's composition
type Animal struct{ Name string }
type Dog struct {
Animal // embedded
Breed string
}
Resources
- Go Official Site
- Go Playground
- pkg.go.dev — package documentation
- Awesome Go
- Go by Example
Comments