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.
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