- Tour of Go
- Go by example
- Effective Go
- Golang channels tutorial
- Resources for new Go programmers
- The zero value
- Darker Corners of Go ✨
- Know Your Nil
Do not communicate by sharing memory; instead, share memory by communicating.
Concurrency is not Parallelism
- Go Concurrency from the Ground Up
- How Goroutines Work ✨
- Concurrency is not Parallelism ✨ ⚡
- Concurrency in golang and a mini Load-balancer
- Channels in Go
- Go Concurrency Patterns
- Concurrent programming, with examples
- Slow down your code with goroutines
- How to Gracefully Close Channels ✨
- Go channels on steroids
- Visualizing Concurrency in Go
- Go’s Extended Concurrency: Semaphores (Part 1)
- Channel Axioms ✨
- Go Concurrency Patterns: Pipelines and cancellation
- Using contexts to avoid leaking goroutines
- Why is a Goroutine’s stack infinite ?
- Advanced Go Concurrency Patterns
- sync.RWMutex
- Profiling Go
- Profiling and optimizing Go web applications
- Profiling Go Programs
- pprof
- go tool trace
- Various go profiling methods
- pprof++: A Go Profiler with Hardware Performance Monitoring
Everything about Go: internals, concurrency, compiler, or packages available in the Go community.
- Go Internals
- How does the go build command work?
- Introducing the Go Race Detector
- String interning in Go
- Arrays, slices (and strings): The mechanics of 'append'
- Go’s hidden #pragmas
- Detecting Race Conditions With Go
- https://vitalcs.substack.com/p/goroutines-under-the-hood
- The Go scheduler ✨
- Scheduler Tracing In Go
- Analysis of the Go runtime scheduler 📃
- Go's work-stealing scheduler
- Golang’s Real-time GC in Theory and Practice ✨
- Getting to Go: The Journey of Go's Garbage Collector
- runtime: Large maps cause significant GC pauses
- How We Saved 70K Cores Across 30 Mission-Critical Services (Large-Scale, Semi-Automated Go GC Tuning @Uber)
- A Guide to the Go Garbage Collector
- An attempt at visualizing the Go GC
- Avoiding high GC overhead with large heaps
- The Go Memory Model ✨
- Go memory ballast: How I learnt to stop worrying and love the heap
- Memory Leaking Scenarios
- Memory Order Guarantees in Go
- GO MEMORY MANAGEMENT
- Contiguous stacks in Go
- Memory Optimizations for Go Systems
- A few bytes here, a few there, pretty soon you’re talking real memory 🚧
- Golang escape analysis 🚧
- Are large slices more expensive than smaller ones? 🔍
- There is no pass-by-reference in Go
- Allocation efficiency in high-performance Go services
- Go memory ballast: How I learnt to stop worrying and love the heap
- Network Programming with Go
- A Million WebSockets and Go
- TCP/IP Networking in Go
- An Implementation and Analysis of a Kernel Network Stack in Go with the CSP Style 📃
- Gotchas in the Go Network Packages Defaults ✨
- Interfaces in Go
- Go Data Structures: Interfaces
- Applied Go
- Golang Has Generics
- Go-tcha: When nil != nil
- SOLID Go Design
- Simple techniques to optimise Go programs
- A whirlwind tour of Go’s runtime environment variables
- How we optimized our DNS server using go tools ✨
- Optimizing M3: How Uber Halved Our Metrics Ingestion Latency by (Briefly) Forking the Go Compiler ✨
- Go, without package scoped variables
- How to generate a random string of a fixed length in Go?
- Building efficient statsd library in Go
- Gopher Puzzlers ⚡
- Visually Understanding Worker Pool
- The Case For A Go Worker Pool
- Go at Google: Language Design in the Service of Software Engineering
- Life of an HTTP request in a Go server
- Send data from file without loading into memory
- Data Race Patterns in Go
- Optimizing Large File Transfers in Linux with Go - An Exploration of TCP and Syscall
- Pardon the Interruption: Loop Preemption in Go 1.14
- Mastering WebSockets With Go
- proposal: arena: new package providing memory arenas
- A Tale of Two
rand
s - See Python, See Python Go, Go Python Go