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 →

Paul A'kint

Developer and editor · 20 years in software development

Frontend foundations.
Backend direction.

Paul A'kint has spent 20 years working in software development across both frontend and backend engineering.

His path into Go grew out of a stint as an Angular frontend engineer. Working close to APIs and application architecture led him further into backend development, where Go's directness, tooling, and approach to concurrency became a natural fit.

At Golang Tutorial, Paul focuses on practical explanations that connect language features to the decisions developers face when building and maintaining backend systems.

Paul's tutorials (26)

testing

Table-Driven Tests in Go: The Idiomatic Way

Golang table driven tests done right: subtests with t.Run, parallel cases, error tables with errors.Is, and golden files, with real tested output.

Read tutorial →
concurrency

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 →
fundamentals

Go Tutorial: From First Program to Backend Foundations

Learn Go fundamentals through a practical path covering setup, types, functions, structs, errors, concurrency, testing, and HTTP.

Read tutorial →
generics

Generic Functions in Go: Writing Reusable Code

Write golang generic functions the right way: Map, Filter, Reduce, and a drop-in utilities package. Every example tested on Go 1.24 with real output.

Read tutorial →
generics

Go Type Parameters: Syntax and Constraints Explained

Learn golang type parameters by example: the [T Constraint] syntax, what each constraint unlocks, type inference, the ~ token, and the method limitation.

Read tutorial →
concurrency

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 →
concurrency

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 →
concurrency

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 →
concurrency

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 →
web-apis

Go HTTP Client: Timeouts, JSON, and Reliable Requests

Build reliable outbound HTTP requests in Go with client timeouts, context, JSON, status checks, body limits, and transport reuse.

Read tutorial →
testing

Testing in Go: Table Tests, HTTP, Fakes, and Coverage

Write effective Go tests with table-driven cases, subtests, httptest, fakes, race detection, benchmarks, and useful coverage.

Read tutorial →
web-apis

Building a REST API with Go: The Complete Tutorial

Build a production-ready REST API in Go with only the standard library: net/http routing, JSON, middleware, context, graceful shutdown, and tests.

Read tutorial →
web-apis

Go HTTP Middleware: Build a Production Chain

Build composable Go HTTP middleware for logging, recovery, request IDs, authentication, and timeouts.

Read tutorial →
web-apis

Go net/http: Build an HTTP Server from Scratch

Build a production golang http server with net/http: Go 1.22 routing, PathValue, timeouts, graceful shutdown and static files, every example tested.

Read tutorial →
concurrency

Go Context: Cancellation, Deadlines, and Request Values

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

Read tutorial →
web-apis

JSON in Go: Encoding, Decoding, and Validation

Encode and decode JSON safely in Go with struct tags, validation, unknown-field checks, and HTTP examples.

Read tutorial →
fundamentals

Golang Hello World and Your First Go Program

Build a Golang Hello World program, understand package main and func main, accept an argument, then run and compile it with Go 1.24.7.

Read tutorial →
fundamentals

Golang Compilation and Execution Explained

Understand Golang compilation and execution with go run, go build, and go install, then produce and verify a reusable application binary.

Read tutorial →
fundamentals

Golang File Structure for Modules and Applications

Learn a practical Golang file structure that starts small, separates commands from domain packages, and uses internal boundaries only when useful.

Read tutorial →
fundamentals

Go Tools You Need for a Reliable Development Loop

Use essential Go tools to format, test, inspect, and build code with a repeatable local workflow that catches problems before review.

Read tutorial →
fundamentals

Golang IDEs: Choose an Editor for Your Workflow

Compare Golang IDE workflows and choose an editor by navigation, testing, debugging, remote work, and team needs instead of feature counts.

Read tutorial →
fundamentals

What Is Go and How Does a Go Program Work?

What is Go? Understand packages, compilation, garbage collection, concurrency, HTTP tooling, tradeoffs, and a tested service handler.

Read tutorial →
fundamentals

How to Learn Golang with a Focused Study Plan

Learn Golang with a focused eight-week study plan built around tested programs, deliberate practice, projects, and production skills.

Read tutorial →
fundamentals

How to Download and Install Golang Safely

Download and install Golang on Windows, macOS, or Linux, verify the active toolchain, and avoid PATH and multiple-installation problems.

Read tutorial →
fundamentals

Why Learn Golang and What Is Go Used For?

Why learn Golang? See where Go fits, what teams build with it, its tradeoffs, and a tested concurrency example before choosing it.

Read tutorial →
fundamentals

Learn Golang with a Practical Beginner Course

Learn Golang through a practical course that moves from syntax to tested programs, modules, errors, concurrency, HTTP, and a final service.

Read tutorial →