Search and navigate

Pages

Start HereRoadmapTutorialsCheatsheetInterview QuestionsResources

Published tutorials

Building a REST API with Go: The Complete TutorialGeneric Functions in Go: Writing Reusable CodeGo Benchmarking: Measuring Performance with testing.BGo Channels: Communication Between GoroutinesGo Constraints: comparable, Ordered and Custom SetsGo Context: Cancellation, Deadlines, and Request ValuesGo HTTP Client: Timeouts, JSON, and Reliable RequestsGo HTTP Middleware: Build a Production ChainGo Interview Questions: 25 Answers That Show UnderstandingGo Mutex: Protecting Shared State from Race ConditionsGo net/http: Build an HTTP Server from ScratchGo select Statement: Multiplexing Channels ExplainedGo Tools You Need for a Reliable Development LoopGo Tutorial: From First Program to Backend FoundationsGo Type Parameters: Syntax and Constraints ExplainedGo Worker Pool Pattern: Bounded Concurrency at ScaleGo's Type System Deep Dive: Static Typing Done RightGolang Compilation and Execution ExplainedGolang File Structure for Modules and ApplicationsGolang Hello World and Your First Go ProgramGolang IDEs: Choose an Editor for Your WorkflowGolang Interfaces: What They Are and How to Use ThemGoroutine Leaks in Go: How to Detect and Prevent ThemGoroutines in Go: Concurrency Without LeaksHow to Download and Install Golang SafelyHow to Learn Golang with a Focused Study PlanIntegration Testing in Go: Testing Real BoundariesJSON in Go: Encoding, Decoding, and ValidationLearn Golang with a Practical Beginner CourseMocking in Go: Test Doubles Without Magicsync.WaitGroup in Go: Coordinating Multiple GoroutinesTable-Driven Tests in Go: The Idiomatic WayTesting in Go: Table Tests, HTTP, Fakes, and CoverageWhat Is Go and How Does a Go Program Work?Why Learn Golang and What Is Go Used For?Writing Unit Tests in Go: A Practical Guide
Open full search and filters →
core branch

Go concurrency

Goroutines, channels, synchronization, cancellation, select, and production concurrency patterns.

Start with the main topic · View all branches

Lesson 1 · Tutorial · Go 1.21+

Go Context: Cancellation, Deadlines, and Request Values

Learn Go context with practical cancellation, timeout, HTTP request, and goroutine examples.

Read tutorial
Lesson 2 · Tutorial · Go 1.21+

Go Mutex: Protecting Shared State from Race Conditions

A golang mutex tutorial that proves the race first, then teaches Lock/Unlock, RWMutex, the copy bug, atomics, and the frank mutex-vs-channel call.

Read tutorial
Lesson 3 · Tutorial · Go 1.21+

sync.WaitGroup in Go: Coordinating Multiple Goroutines

A tested golang waitgroup guide: the Add/Done/Wait counter model, the copy-by-value deadlock, the Add-inside-goroutine race, and Go 1.25's WaitGroup.Go.

Read tutorial
Lesson 4 · Tutorial · Go 1.21+

Go select Statement: Multiplexing Channels Explained

Learn Go's select statement with tested code: the random-choice rule, non-blocking default, timeouts, the nil-channel trick, and context cancellation.

Read tutorial
Lesson 5 · Tutorial · Go 1.21+

Go Worker Pool Pattern: Bounded Concurrency at Scale

Build a Go worker pool with tested code: bounded concurrency, error propagation, context cancellation, correct channel closing, and how to size the pool.

Read tutorial
Lesson 6 · Tutorial · Go 1.21+

Goroutines in Go: Concurrency Without Leaks

Learn how goroutines run, how to wait for them, propagate errors, cancel work, and prevent leaks.

Read tutorial
Lesson 7 · Tutorial · Go 1.21+

Go Channels: Communication Between Goroutines

Learn Go channels, buffering, closing, range, ownership, pipelines, and cancellation with practical examples.

Read tutorial
Lesson 8 · Tutorial · Go 1.21+

Goroutine Leaks in Go: How to Detect and Prevent Them

Detect and fix golang goroutine leaks with tested code: runtime.NumGoroutine, the pprof goroutine profile, go test leak checks, and per-cause fixes.

Read tutorial