Here are various resources that are good to know about while learning the Go programming language.
I created a list of commonly used Go packages and other dev tools at Go dev tools.
getting started
- if you’re new to programming, check out Golang Tutorial For Beginners - YouTube
- A Tour of Go is probably the best way for developers with experience in another language to start learning Go
- Go Playground is an online Go editor and runner
- Tutorial: Get started with Go
- Go by Example
- Organizing a Go module
- Go FAQs
- go.dev/learn
- Effective Go
- 100 Go Mistakes and How to Avoid Them
- Jamie Tanna’s guide to learning Go
- Learn X in Y minutes where X=Go
- Learn Go With Tests by quii and Denise
- Anthony GG - YouTube
- Advent of Code is a great way to get practice with a new language
- How To Code in Go is a list of many guides written by DigitalOcean
- Go Roadmap - roadmap.sh
- Go Programming Language Wiki
miscellaneous
- Pointers vs. references
- Go Databases by Hamza Ali - comparisons of various Go database libraries and why to not use an ORM
- Logging in Go with Slog: The Ultimate Guide by Better Stack Community
- CPU Throttling for containerized Go applications explained by Kanishk Singh
- Don’t defer Close() on writable files by Joe Shaw
- My favorite build options for Go, by Gaurav Kamathe, covers commands that show how Go creates binaries, what intermediate assembly it uses, and how to make Go binaries smaller.
- Interface Upgrades in Go by Avtok
- Reading Google Sheets from a Go program by Eli Bendersky
error handling
- A Beautiful Way To Deal With ERRORS in Golang HTTP Handlers - YouTube
- Error handling in Go HTTP applications by Joe Shaw
- How to Add Extra Information to Errors in Go by DigitalOcean
web APIs
- 4 Things to Consider When Choosing a Go API Framework by Mark Phelps
- Backend from the Beginning by Efron Licht
deployment and distribution
- Go docker images: small and simple by Laurent Demailly
- GoogleContainerTools/distroless - language focused docker images, minus the operating system
- this discussion covers what build flags to try when you want to create a statically-linked binary
- Publishing Go packages
- Gokrazy - deploy Go programs as appliances to a Raspberry Pi or PC
contexts
- How To Use Contexts in Go by DigitalOcean
- Context Control in Go
profiling, benchmarking, & execution tracing
- Profiling Go Programs (using pprof) by Russ Cox and Shenghou Ma
- How to write benchmarks in Go by Dave Cheney
- More powerful Go execution traces