awesome-go

My Personal “Awesome” Go List

🎉 Just learning Go? Welcome to the party! Here’s what I recommend most people do to learn it well. Note that most of these resources assume you already know how to program, that you know what a “loop” is, for example.

  1. A Code Mage’s First Spell Book
    Learn practical computer science and programming with Go as a first language
  1. Go by Example and possibly Tour of Go
  2. Browse the official Go User Manual
  3. How to Write Go Code
  4. Effective go (to understand why)
  5. Start a project of your own, doesn’t matter how big or small
  6. Start reading Go 101 concurrently (600 pages) and Go Modules (not in book)
  7. Code something more advanced with concurrency (net/http, contexts)
  8. Read Go Code Review Comments for style guide
  9. Read The Go Programming Language Specification to fill any gaps
  10. Browse the Go standard library source code
  11. Browse the Bonzai monorepo source code
  12. Browse the [Universal Package Library][] source code
  13. Maybe read Learning Go (but you’ll have to buy it)
  14. Read 100 Go Mistakes and How to Avoid Them
  15. Create a command line tool using Bonzai
  16. Create a command line tool using Cobra
  17. Write a middleware API using Gin or another framework

💥 It is really important you get coding something you want to make, a project, as soon as possible. That will keep you motivated to learn. Obviously, you’ll be writing a lot of your own code between reading books. But, by the time you read all of that, while coding at the same time, you’ll be on your way to becoming a Go master for sure.

I’m not a fan of most “awesome” lists. Most of them are full of stuff that, um, really isn’t awesome at all. A lot are there to promote stuff. My list has three purposes:

  1. Promote my own stuff and keep track of it
  2. Easily find awe-inspiring modern code, idioms, and content
  3. Help people get started with Go programming

Disclosure: I actually sponsor some of these with my own cash. They are really that good.

Everything here is either Apache, BSD, or MIT licensed. I don’t do GPLv3.

My Own Stuff

Other Awesome Stuff

Learning Resources

There are a lot of bad Go learning resources out there. Most of them are woefully out of date. Just be really careful. Nothing goes on this this that isn’t 100% relevant to modern Go 1.18+ and available for free (although I encourage you to support them the best you can).