First Steps
For new programmers:
Alex Edwards' Let's Go and Let's Go Further teach core patterns, project structure and API development. They're the best introduction for a new programmer.For experienced programmers:
- Tour of Go is the best place to get a feel for the language. A few hours at most.
- Pick one:
- Matt Holiday’s video course is in-depth and covers a lot of ground.
- Learn Go with Tests
- Effective Go
What’s next?
- Cloud Native Go - Titmus
- 100 Go Mistakes
- Style guides by Uber and Google
- Writing an Interpreter in Go & Writing a Compiler in Go - Thorsten Ball
Make a server, but not some demo thing, go all the way.
- unit, integration, e2e tests
- Database
- Integrate with an OAuth provider and use access controls
- Make it horizontally scalable
- Dockerize it and run the service in the cloud
- Secure it with SSL
- Make it auditable and monitorable
- Get a build infrastructure and a release process for it
In other words, just do the stuff you’d be doing if you were working with it professionally.
Advanced
- Go Blog
- Go Weekly Newsletter
- Go Performance
- https://blogs.sap.com/2023/11/10/mastering-concurrency-unveiling-the-magic-of-gos-scheduler/#
- upcoming go proposals: https://github.com/golang/go/issues/33502
Also Useful:
- Go by Example and Go Web Examples show typical menial patterns like file handling, environment variables, flags etc.
Difficult to Recommend:
- Go Design Patterns - Mario Castro Contreras: The community balks at “designs patterns” as bandaids over missing features in languages like Java. Go of course has its own patterns, but the community hasn’t yet categorized them explicitly. Creational ones like factory, builder, constructor etc. are common. This best works as a catelogue of antipatterns.
- Functional Programming in Go - Dylan Meeus: Though Go is not functional, many insights do apply. You need enough experience and judgement to identify and avoid antipatterns.