HOME / CATALOG / GO PROGRAMMING LANGUAGE
01
ROADMAP / INTERMEDIATE

Go Programming Language

31 TOPICS · 20 HOURS · INTERMEDIATE · SCALE 1:4
START CANVAS

A comprehensive roadmap to mastering Go, from setting up your environment and writing your first program to building production-grade concurrent systems, web services, and cloud-native applications.


§ SYLLABUS

§ SECTION 01 · GETTING STARTED
  1. 01
    Go Toolchain & Environment Setup

    Install Go, understand GOPATH vs Go modules, and learn the core CLI commands like go run, go build, go mod init, and go fmt that form your daily workflow.

  2. 02
    Basic Syntax & Data Types

    Learn Go's type system including integers, floats, strings, booleans, and runes, along with variable declarations using var and short assignment, constants, and basic operators.

  3. 03
    Control Flow

    Master if/else statements, for loops (Go's only loop construct), switch statements with expression and type switches, and defer statements for cleanup logic.

  4. 04
    Functions & Multiple Return Values

    Understand function declarations, multiple return values (Go's signature pattern), named returns, variadic functions, and first-class functions as values.

§ SECTION 02 · CORE DATA STRUCTURES
  1. 01
    Arrays & Slices

    Understand the difference between fixed-size arrays and dynamically-sized slices, how slices reference underlying arrays, and operations like append, copy, and slice expressions.

  2. 02
    Maps

    Learn how to create, read, update, and delete entries in Go's built-in hash map type, including the comma-ok idiom for checking key existence.

  3. 03
    Structs & Methods

    Define custom types with structs, attach methods using receiver functions, and understand the difference between value receivers and pointer receivers.

  4. 04
    Pointers

    Understand how pointers work in Go, when to pass by pointer vs by value, the new() built-in, and why Go has no pointer arithmetic.

§ SECTION 03 · INTERFACES & TYPE SYSTEM
  1. 01
    Interfaces & Implicit Implementation

    Learn Go's unique approach to interfaces where types satisfy them implicitly, enabling loose coupling and powerful abstractions without inheritance.

  2. 02
    Type Assertions & Type Switches

    Extract concrete types from interface values using type assertions and type switches, and understand the empty interface (any) and its role.

  3. 03
    Generics

    Write type-parameterized functions and types using Go's generics system, understand type constraints, and learn when generics are the right choice vs interfaces.

  4. 04
    Struct & Interface Embedding

    Use composition over inheritance through Go's embedding mechanism, promoting methods and fields from embedded types to achieve code reuse.

§ SECTION 04 · PACKAGES, MODULES & ERROR HANDLING
  1. 01
    Packages & Modules

    Organize code into packages, understand exported vs unexported identifiers, manage dependencies with Go modules, and learn semantic import versioning.

  2. 02
    Error Handling Patterns

    Master Go's explicit error handling philosophy using the error interface, error wrapping with fmt.Errorf and %w, errors.Is, errors.As, and sentinel errors.

  3. 03
    Panic & Recover

    Understand when panics occur, how to recover from them using deferred functions, and why panics should be reserved for truly unrecoverable situations.

§ SECTION 05 · CONCURRENCY
  1. 01
    Goroutines

    Launch lightweight concurrent functions with the go keyword, understand how goroutines are multiplexed onto OS threads, and learn the basics of concurrent execution.

  2. 02
    Channels

    Communicate between goroutines using channels, understand buffered vs unbuffered channels, directional channel types, and the range/close pattern.

  3. 03
    Select Statement

    Multiplex across multiple channel operations using select, implement timeouts, non-blocking sends and receives, and build fan-in patterns.

  4. 04
    Sync Primitives

    Use sync.Mutex, sync.RWMutex, sync.WaitGroup, sync.Once, and sync.Map for scenarios where shared memory is more appropriate than channels.

  5. 05
    Concurrency Patterns

    Implement common patterns like worker pools, pipelines, fan-out/fan-in, cancellation via context.Context, and errgroup for managing groups of goroutines.

§ SECTION 06 · STANDARD LIBRARY ESSENTIALS
  1. 01
    I/O & File Handling

    Work with io.Reader and io.Writer interfaces, read and write files using os and bufio packages, and understand how Go's I/O abstractions compose.

  2. 02
    JSON & Data Encoding

    Marshal and unmarshal JSON with encoding/json, use struct tags for field mapping, handle dynamic JSON with map[string]any, and work with streaming encoders/decoders.

  3. 03
    Strings, Bytes & Unicode

    Understand Go's string internals as byte slices, work with the strings and bytes packages, handle Unicode with the unicode/utf8 package, and use strings.Builder for efficient concatenation.

§ SECTION 07 · TESTING & QUALITY
  1. 01
    Testing with the testing Package

    Write unit tests, table-driven tests, and subtests using Go's built-in testing package, and run them with go test including coverage analysis.

  2. 02
    Benchmarks & Profiling

    Write benchmark functions, use pprof to profile CPU and memory, and identify performance bottlenecks using Go's built-in profiling tools.

§ SECTION 08 · WEB DEVELOPMENT & APIS
  1. 01
    HTTP Servers with net/http

    Build HTTP servers using Go's standard library, understand the Handler and HandlerFunc patterns, implement middleware, and work with the enhanced routing in Go 1.22+.

  2. 02
    HTTP Client & External APIs

    Make HTTP requests with net/http.Client, set timeouts and headers, parse response bodies, and handle retries and error responses gracefully.

  3. 03
    Database Access with database/sql

    Connect to SQL databases, execute queries and prepared statements, scan results into structs, manage connection pools, and handle transactions.

§ SECTION 09 · PRODUCTION GO
  1. 01
    Project Layout & Design Patterns

    Structure Go projects for maintainability, understand the standard project layout conventions, apply dependency injection, and organize code using the repository and service patterns.

  2. 02
    Context Package Deep Dive

    Use context.Context for cancellation propagation, timeouts, and request-scoped values across API boundaries and goroutine trees.

  3. 03
    Building & Deploying Go Services

    Create minimal Docker images with multi-stage builds, cross-compile for different platforms, use build tags, and configure Go services for production with graceful shutdown.