mirror of
https://github.com/enocom/gopher-reading-list.git
synced 2026-05-15 14:15:49 -06:00
A curated selection of blog posts on Go
| README.md | ||
A Gopher's Reading List
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
- 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs
Worth reading, again and again
- Effective Go
- Visualizing Concurrency in Go
- Strings, bytes, runes and characters in Go - The Go Blog
- Arrays, slices (and strings): The mechanics of 'append' - The Go Blog
Organization and Style
- Code Review Comments
- command center: Less is exponentially more
- Go Proverbs
- Idiomatic Go
- Errors
- Go's Error Handling is Elegant
- Effective error handling in Go. - Morsing's blog
- Alternative Patterns for Method Overloading in Go
- Five Suggestions for Setting up a Go project
- Structuring Tests in Go
- Organizing Go Code
- The anatomy of a Go project - darian.af
- Standard Package Layout
- time in go
- The empty struct
- For Range Semantics - GoingGo - Ardan Labs
- How I Learned To Quit Worrying And Love Go's Interfaces
- How to use interfaces in Go
- A Guide to Types and Casting in Golang : Programming and Development Blog | Stone River eLearning
The Web
- Creating My First Web Application with Go
- Making a RESTful JSON API in Go - The New Stack
- How to Serve Static Files with Golang
- An Intro To Templates in Go - Contextual Encoding
- Elliot Chance - Working With JSON in Go
- Making concurrent HTTP requests in Go programming language - Jinchuriki
- Golang http handlers as middleware - @capotej
- A TCP Echo Server in Go (Golang) | Jim Lawless' Blog
- HTTP File Upload and Download with Go - zupzup
- Simple Golang HTTP Request Context Example · Paul Fortin
- Go and JSON - Eager Blog
- Writing HTTP Middleware in Go
Intermediate
- Five things that make Go fast
- Go Walkthrough: bytes + strings packages
- Go's net/context and http.Handler – Joe Shaw
- Stopping goroutines #golang
- Working with Files in Go | DevDungeon
- Golang: interface{}, type assertions and type switches
- Datetime Parsing with Go · Simon Taranto
- Golang: Working with Gzip and Tar
- Crossing Streams: a Love Letter to io.Reader
- Variadic functions in Go
- Ensuring Go interface satisfaction at compile-time
- Concurrency Patterns: Golang
- Testing Web Apps in Go | Mark J. Berger
- An Introduction to Testing in Go | TutorialEdge.net
- 5 simple tips and tricks for writing unit tests in #golang
- Go gotcha: newbie or ninja?
- Style guideline for Go packages · Go, the unwritten parts
- Go best practices, six years in
- Solid Go Design
- The package level logger anti-pattern
- GopherAcademy - Conferences, Training, and Community
- 5 Advanced Testing Techniques in Go · Segment Blog
- What “accept interfaces, return structs” means in Go
- Aspects of a good Go library – Jack Lindamood – Medium
- Reading files in Go — an overview
- HTTP(S) Proxy in Golang in less than 100 lines of code
- Write a Kubernetes-ready service from zero step-by-step GopherAcademy
- How to not use an http-router in go
- Ways to limit concurrent resource use - Pocket Gophers
- Make Ctrl+C cancel the context.Context – Mat Ryer – Medium
- Go’s std net/http is all you need … right? – Dean Karn – Medium
- Cancelling Multiple Goroutines
- The Cult of Go Test
- Unofficial Go FAQ
- Pitfalls of context values and how to avoid or mitigate them in Go
- Go tooling essentials · Go, the unwritten parts
- Profiling Go Programs - The Go Blog
- How to correctly use context.Context in Go 1.7 – Medium
- Using contexts to avoid leaking goroutines · go bits
- Go Concurrency Patterns: Pipelines and cancellation - The Go Blog
- Gopher Puzzlers
- Structuring Applications for Growth
- Tutorial: Synchronizing State with Mutexes in Go
- Context
- Successful Go Program Design, 6 Years On
- research!rsc: Go Data Structures
- The complete guide to Go net/http timeouts
- A brief intro of TCP keep-alive in Go’s HTTP implementation | Nan Xiao's Blog
- Go: Marshal and Unmarshal JSON with time and URL data - Ukiah Smith
- Advanced Go Tips And Tricks | Tit Petrič
- How To Write Router Tests in Go — Tapjoy Engineering
- Go Tooling in Action — Google Cloud Platform — Community — Medium
- Writing a Data Mapper in Go without an ORM
- 10 things you (probably) don't know about Go
- Go Concurrency Patterns: Context - The Go Blog
- HTTP Request Contexts & Go · go, web, go
- Interfaces and Composition for Effective Unit Testing in Golang
- Go Testing Technique: Testing JSON HTTP Requests — Medium
- Acceptance Testing Go Web Applications with Cookies
- Using Object-Oriented Web Servers in Go - via @codeship | via @codeship
- Testing Your (HTTP) Handlers in Go · go, web, go
- Practical Persistence in Go: Organising Database Access
- Handle HTTP Request Errors in Go @ Alex Pliautau's Blog
- Your pprof is showing: IPv4 scans reveal exposed net/http/pprof endpoints:
- Golang slices gotcha · allegro.tech
- Always Be Closing
- Go: Timeout Commands with os/exec CommandContext
- TechnoSophos: Go Quickly - Converting Character Encodings In Golang
- Golang: pass by pointer vs pass by value
- Don't defer Close() on writable files
- Gracefully terminate a program in Go | Alexander Guz's blog
- Context and Cancellation of goroutines - http://dahernan.github.io
- There is no pass-by-reference in Go | Dave Cheney
- Error handling patterns in Go
- How to Block Forever in Go
- How to ship production-grade Go - O'Reilly Media
- Using Functions Inside Go Templates - Calhoun.io
- Go json.Decoder Considered Harmful
- Self-referential functions and the design of options
- Go Microservices blog series, part 1. | Callista Enterprise
- Configuring Go Apps with TOML - Benaiah Mischenko
- Serving Multiple Sites from One Go Process · zikes.me blog
- Methods, Interfaces and Embedded Types in Go - GoingGo - Ardan Labs
- Implementing UDP vs TCP in Golang - Mina Andrawos
- Testing Your (HTTP) Handlers in Go
- Dancing with Go's Mutexes
- GoRoutines, Channels, and Proper Exits - Rabarar's Blog
- Use sync.WaitGroup in Golang | Nan Xiao's Blog
- Logging, interfaces, and allocation · Don't Panic
- Building High Performance APIs In Go Using gRPC And Protocol Buffers
- Testing concurrent code in Golang - JS Blog
- Loose Coupling in Go lang | 8th Light
- Compile-time assertions in Go · Don't Panic
- Unit Testing Golang HTTP Middleware
- Don't use Go's default HTTP client (in production)
- Writing an API Client in Go GopherAcademy
- Mutex Profile
- Function Types in Go (golang)
- Examples For Using io.Pipe in Go - zupzup
- Lesser-Known Features of Go Test - Blog | Splice
- Reducing boilerplate with go generate GopherAcademy
- Sane Concurrency with Go | Mozilla Services
- Writing worker queues, in Go
- Goroutine Tracing
- Understanding Go Lang Memory Usage
- Profiling Go
- Job Queues in Go - OpsDash
- Diagnostics - The Go Programming Language
- Seeking around in an HTTP object GopherAcademy
Advanced
- Debugging a potential deadlock in Go
- Go's work-stealing scheduler · Go, the unwritten parts
- Advanced Encoding and Decoding Techniques
- Custom JSON Marshalling in Go · Choly's Blog
- Optimized abs() for int64 in Go
- Mutable strings in Golang – Koki – Medium
- unsafe.Pointer and system calls GopherAcademy
- Minimal Perfect Hash Functions
- Allocation Efficiency in High-Performance Go Services · Segment Blog
- Go Assembly by Example
- Go Experience Report for Generics: Google metrics API
- A Million WebSockets and Go – freeCodeCamp
- Address Alignments in Go
- How to Optimize Garbage Collection in Go | Cockroach Labs
- The Go scheduler - Morsing's blog
- Golang's Real-time GC in Theory and Practice - Pusher Blog
- Advanced Go Concurrency Patterns - The Go Blog
- Stateful locks in Go - Tit Petric
- Looking at your program’s structure in Go 1.7 · Paul Smith
- Managing Syscall Overhead with crypto/rand · Scott Mansfield
- Multiplexing Golang Channels to Maximize Throughput | The MongoDB Engineering Journal
- allegro.tech - Writing a very fast cache service with millions of entries in Go
- Golang lock-free values with atomic.Value
- Profiling memory usage of a Go app | Vince Yuan's technical blogs
- The Go netpoller - Morsing's blog
- Locking in crypto/rand
- Anatomy of a function call in Go
- Advanced Reflection with Go at HashiCorp GopherAcademy
- Manual Memory Management in Go
- Text normalization in Go - The Go Blog
- go-fuzz github.com/arolek/ase â Damian Gryski
- Allocation Efficiency in High-Performance Go Services