-
Programming in Go by Mark Summerfield
Must read. Being boring sometimes, this book is a good source of knowledge of the language and its environment.
-
The Go Programming Language by Alan A. A. Donovan, Brian W. Kernighan
Another must read. This book will be not enough without reading the previous one, as well as vice versa. But it adds some gems to your knowledge.
-
Go in Practice by Matt Butcher and Matt Farina
This book is quite optional.
-
This book contains information about most commonly used features of the language. It can be considered as an addition to Go Tour.
- Effective Go - The Go Programming Language
- Frequently Asked Questions (FAQ) - The Go Programming Language
- The Go Memory Model - The Go Programming Language
- CodeReviewComments · golang/go Wiki · GitHub
- research!rsc: Go Data Structures
- Share Memory By Communicating - The Go Blog
- JSON and Go - The Go Blog
- Defer, Panic, and Recover - The Go Blog
- Go maps in action - The Go Blog
- Go Slices: usage and internals - The Go Blog
- Arrays, slices (and strings): The mechanics of 'append' - The Go Blog
- Strings, bytes, runes and characters in Go - The Go Blog
- Go Concurrency Patterns: Timing out, moving on - The Go Blog
- Go Concurrency Patterns: Context - The Go Blog
- Go Concurrency Patterns: Pipelines and cancellation - The Go Blog
- Organizing Go code - The Go Blog
- Godoc: documenting Go code - The Go Blog
- Package names - The Go Blog
- Error handling and Go - The Go Blog
- Errors are values - The Go Blog
- Writing Web Applications - The Go Programming Language
- The Go Programming Language Specification - The Go Programming Language
- Gobs of data - The Go Blog (useful for internal communication)
- JSON-RPC: a tale of interfaces - The Go Blog
- Go's Declaration Syntax - The Go Blog
- The Laws of Reflection - The Go Blog
- Generating code - The Go Blog
- Introducing the Go Race Detector - The Go Blog
- Profiling Go Programs - The Go Blog
- Go GC: Prioritizing low latency and simplicity - The Go Blog
- Introducing HTTP Tracing - The Go Blog
- HTTP/2 Server Push - The Go Blog
- Deploying Go servers with Docker - The Go Blog
- Testable Examples in Go - The Go Blog
- Using Subtests and Sub-benchmarks - The Go Blog
- 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs
- Go, Robots and code refactoring - Matt Aimonetti
- Interfaces and Composition for Effective Unit Testing in Golang | I care, I share, I'm Nathan LeClaire.
- Learn How We Test Go Lang at Stream | The Stream Blog
- Bit Hacking with Go – Learning the Go Programming Language
- Five things that make Go fast | Dave Cheney
- Learn Go in Y Minutes
- Running MongoDB Queries Concurrently With Go - GoingGo - ArdanLabs
- InterfaceSlice · golang/go Wiki · GitHub
- MethodSets · golang/go Wiki · GitHub
- PanicAndRecover · golang/go Wiki · GitHub
- Performance · golang/go Wiki · GitHub
- Range · golang/go Wiki · GitHub
- RateLimiting · golang/go Wiki · GitHub
- SignalHandling · golang/go Wiki · GitHub
- SliceTricks · golang/go Wiki · GitHub
- Switch · golang/go Wiki · GitHub
- TableDrivenTests · golang/go Wiki · GitHub
- Timeouts · golang/go Wiki · GitHub
- SendingMail · golang/go Wiki · GitHub