Photo by Annie Spratt on Unplash

Resources for learning Go

There’s a lot of great content out there for learning Go — so much, in fact, that I often get asked for a list of resources people should look at. Whether you’re a beginner programmer or experienced engineer, if you’re interested in learning Go here’s what I recommend checking out — roughly in the order given.

Installing Go

Editors/IDE’s & Plugins

Free & Open Source:

Paid:

Learning the Go programming language

  • A Tour of Go — A step by step tour of the Go language with interactive examples. Covers basic syntax, data structures, methods, interfaces and concurrency.
  • Effective Go — Tips for writing clear, idiomatic Go code.
  • Code Review Comments — a laundry list of common mistakes, not a style guide.

Workshops/Tutorials

Learning by Example

  • Go By Example — a hands-on introduction to Go using annotated example programs (code and explanations are side-by-side).
  • Go Web Examples — learn how to build web services in Go through a series of code snippets.

3rd-Party Packages

References

  • Go standard library — one of the awesome things about Go is the quality of the standard library; a good exercise is to go through each package and try to understand what it does and how you might use it.
  • Learn — the official community wiki page linking to community-driven resources/initiatives.
  • LearnErrorHandling —a good list of resources about error handling.
  • LearnTesting —a good list of resources about testing.
  • Official Go FAQ — answers a lot of questions about the project, language design, features, etc.
  • Unofficial Go FAQ — a more practical FAQ, answering common questions you might have while debugging issues with your code.

Talks

  • “Understanding nil” by Francesc Campoy: video / slides
  • “Stupid Gopher Tricks” by Andrew Gerrand: video / slides
  • “Evolutionary Optimization in Go” by Peter Bourgon: video / article
  • “Go + microservices” = Go kit by Peter Bourgon: video / slides
  • “Generating Better Machine Code with SSA” by Keith Randall: video / article
  • “Forward Compatible Go Code” by Joe Tsai: video / article
  • “Microservices in Go: tools, patterns & abstractions” by me: slides
  • Official talks archive

YouTube Channels

Blogs

Like I said — there’s a lot of great content out there — with more stuff coming out every week! If you’re interested in receiving weekly content in your inbox, I’d recommend signing up for Golang Weekly.

If you’re looking for help — check out the official Help page for list of great resources such as the Go IRC & Slack channels. I also encourage everyone to check out their local GoUserGroup, and if there isn’t one near you — start one. Happy hacking everyone!

#DevOps, #Security, Go (#golang), #Linux, #Docker, #Kubernetes. DevOps Manager @Xero. Previously: DevTools Engineering Manager @Cloudflare. Opinions are my own.

#DevOps, #Security, Go (#golang), #Linux, #Docker, #Kubernetes. DevOps Manager @Xero. Previously: DevTools Engineering Manager @Cloudflare. Opinions are my own.