Warning
This post is more than 5 years old. It may not fully represent my current thoughts on this topic. Please keep that in mind while reading.
There is an awesome list of Go tools out there to find pretty much everything Go. The problem is, it’s a huge list, really not ideal for beginners in my humble opinion. Therefore I try to put together a Golang essentials below. Expect it to be regularly updated as I find old projects to no longer be supported and new ones which should really make this list…
Getting Started
- Go Tour
- Go by Example
- Golangbot.com
- Strings, bytes, runes and characters in Go
- Arrays, slices (and strings
- Databases
- Go Cheat Sheet
- Exercism.io - Practice, get feedback!
Best coding practices
- Go Language - Web Application Secure Coding Practices
- Organizing Go Code
- Embrace the Interface (video)
- Testable Examples in Go
- Package names
- Errors are values
- Error Handing in Go (video)
- Error Handling in Go (blog post)
- 7 Common mistakes in Go and how to avoid them (video)
- Testing Techniques (video)
- The Many Faces of Struct Tags (video)
- What Could Go Wrong? (video)
- SOLID Go Design (video)
- Twelve Go Best Practices
- Standard Package Layout
- How to avoid Go gotchas
- Go Best Practices
- Context
Tooling
- Delve into Go (video)
- Go Tooling in Action
- 3rd party debugger
- GoConvey - Go testing in the browser, with optional behavioral tools
- Goblin - a Mocha like BDD testing framework for Go
- Godog - Cucumber for Golang
- Ginko - a BDD-style Golang testing framework
- testify - sacred extension to the standard go testing package
- Profiling Go Programs
- Race Detector
- HTTP Tracing
- Static Code Analysis Using SSA (video)
- Go Dynamic Tools (video)
- Code Analysis (video)
- Benchmarking Go (video)
- Go Static Analysis Tools (video)
- go-cleanarch
- gocbs - Find areas in your codebase that might need refactoring
- richgo - Enrich go test outputs with text decorations
- govvv - binary versioning tool that wraps the go build command
Interesting projects
Section has been moved to its own blog post: Coolest Open Source Go Projects in the Wild.
Advanced Go
- Understanding Nil (video)
- The thing about slices
- Inside the Map implementation
- A Practical Guide to Preventing Deadlocks and Leaks in Go (video)
- Stupid Gopher Tricks (video)
- Complex Concurrency Patterns in Go (video)
- Understanding memory allocation in Go (video)
- Whispered Secrets (video)
- Race Conditions, Mutexes, and Debugging Go (video)
- Advanced Go Concurrency Patterns (video)
- Using code generation to survive without generics in Go
- The challenges of writing a massive and complex go application (video)
- Where does Go’s concurrency (CSP) fall short?
- Golang Challenge - Learn from the best
- Going Go Programming - Very educational blog
Online sources
- Gopher Academy (youtube channel)
- Go Language - Web Application Secure Coding Practices
- Golang Bootcamp (online book)
- A Go Developer’s Notebook
- go-patterns - Curated list of Go design patterns, recipes and idioms
- algorithms - Algorithms & Data Structures in Go
- go-algorithms - Algorithms and data structure by golang
- go-algorithms - Algorithms and data structures for golang
- Go for JavaScript developers (WIP)
More videos
Books
Missing features / Future of Go
People coming from other languages often look for their favorite features from their previous languages. Oftentimes these are there in Go in some other form or name, sometimes they are missing because the language authors consider them harmful and sometimes they just haven’t been added yet. Chances are, the community already discusses these features and the Go team is collecting these complaints and discussions to consider them when designing Go 2.0. You can find the list on Github.
Random interesting posts
- How to Build & Host a (Very Fast) Static E-Commerce Site
- More posts on Hugo
- Comparing Erlang and Go Concurrency
- Don’t just check errors, handle them gracefully
Design patterns, common utilities and examples
- lodash-go - port of lodash and underscore
- lctime - locale-based datetime formatting
- timeutil - useful extensions
- now - time toolkit
- jsonschema - Generate JSON Schemas from Go types
- structs - Utilities for Go structs
- decimal - Arbitrary-precision fixed-point decimal numbers
- GoMoney - Implements of Fowler’s Money pattern
- Afero - FileSystem Abstraction System
- gorx - Reactive eXtensions for Go
- Reactive Extensions for the Go language
Find tools and projects
- Awesome Go - A curated list of awesome Go frameworks, libraries and software
- Awesome Go - App
- golanglibs.com - Categorized go libraries
- Go Wiki
- Go Walker - Search in over 280.000 go projects