Here is a reading list of blog posts about Go. It aspires to include only the most useful and relevant material that anyone writing Go should eventually read. By defintion, the list is a work in progress.

Rather than being comprehensive, the list is a curated selection fixed at 200 entries.

Go is growing fast and so are the number of blog posts about it. If an interested reader sees a glaring omission, please open a pull request. Include your suggestion of what to add and what to remove to keep the list at its fixed length.

Start Here

Beginner

Some basics

  • Slice Tricks
  • 5 Tips for Using Strings in Go
  • Struct, Map, Array and Slice
  • Understand Go pointers in less than 800 words or your money back | Dave Cheney
  • Tutorial: Go (Golang) Pointers in 5 Minutes | Giant Flying Saucer
  • Pointers
  • Golang channels tutorial | Alexander Guz’s blog
  • (Now You’re) Thinking With Channels
  • Channel Axioms | Dave Cheney
  • Curious Channels
  • Understanding Go panic output
  • How to avoid Go gotchas · divan’s blog
  • Common Gotchas in Go
  • 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs
  • Unofficial Go FAQ

Worth reading, again and again

Organization and Style

Web

Concurrency

Intermediate

Code Design

  • Go best practices, six years in
  • Aspects of a good Go Library — Jack Lindamood — Medium
  • Solid Go Design
  • The package level logger anti-pattern
  • Go’s STD NET/HTTP is all you need… right? – Dean Karn – Medium
  • What “accept interfaces, return structs” means in Go
  • Golang: interface{}, type assertions and type switches
  • Ensuring Go interface satisfaction at compile-time
  • Pitfalls of context values and how to avoid or mitigate them in Go
  • Structuring Applications for Growth
  • How to ship production-grade Go – O’Reilly Media
  • Loose Coupling in Go lang | 8th Light
  • Self-referential functions and the design of options
  • Functional Options for Friendly APIs
  • Object Oriented Inheritance in Go

Concurrency

Testing

Web

Tools

Trivia

Diagnostics

Language

Miscellaneous

Advanced

Low Level Concerns

  • · Go, the unwritten parts
  • The Go scheduler – Morsing’s blog
  • Go Assembly by Example
  • Address Alignments in Go
  • Hacking the Scheduler
  • The Go netpoller – Morsing’s blog
  • Anatomy of a function call in Go
  • Scalable Go Scheduler Design Doc
  • Scheduler Tracing in Go
  • Manual Memory Management in Go
  • unsafe.Pointer and system calls GopherAcademy
  • Looking at your program’s structure in Go 1.7 · Paul Smith
  • Overhead with Crypto/Rand Scott Mansfield

Performance

Garbage Collection

Concurrency

Character encodings

JSON Encoding and Decoding

Miscellaneous