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
- Download Link: https://golang.org/dl/
- Installing Go for first-time programmers on a Mac — a guide I wrote.
- The official Go Getting Started documentation.
Editors/IDE’s & Plugins
Free & Open Source:
Paid:
- Sublime Text with the GoSublime plugin.
- GoLand
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
- Building a wiki — a golang.org tutorial for writing web applications.
- Go tooling in action workshop by Francesc Compoy (Video here).
- Whispering Gophers by Francesc Compoy and Andrew Gerrand (Slides here).
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
- Essential, production-ready Go packages — a list I put together.
- Awesome Go — A curated list of awesome Go frameworks, libraries and software.
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
- Gophercon videos
- JustForFunc: Programming in Go by Francesc Campoy
Blogs
- Ardan labs blog — originally called “Going Go”, William Kennedy started writing about Go back in 2013, and has a lot of long-form content with excellent examples. Check out Package Oriented Design and The Behaviour Of Channels.
- Dave Cheney’s blog — Dave has been writing about Go since 2010, and has a lot of good content. Check out Understand Go pointers and Do not fear first class functions, for example.
- Peter Bourgon’s blog —in addition to some great Go-specific articles, has a lot of content not specific to Go that is still relevant. Check out OK Log and 2016 best practices.
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!