Go Academy icon

Go Academy

GOBackendCloudSystemsWebBeginnerEnterpriseNetwork

Dive into Go programming to create efficient and scalable applications with GO Academy.

πŸ€– AI-Powered
Course Overview

Welcome to CoddyKit's comprehensive Go (Golang) learning path! Are you ready to dive into one of the fastest-growing and most in-demand programming languages for modern software development? Go, developed by Google, is celebrated for its simplicity, efficiency, built-in concurrency, and robust tooling. It's the language of choice for building scalable backend services, cloud-native applications, command-line tools, and high-performance systems. Whether you're a complete beginner looking to start a career in backend development or an experienced programmer eager to add a powerful, concurrent language to your skillset, this curriculum offers a structured, hands-on journey to mastering Golang. Get ready to write clean, fast, and reliable code that powers the next generation of applications!

Your Journey to Go Mastery: The CoddyKit Curriculum

Our Go curriculum is meticulously designed to take you from foundational concepts to advanced, production-ready application development. Each mini-course builds upon the last, ensuring a solid understanding at every level. Let's explore what awaits you:

Level A1: Go Fundamentals - Building Your Core

Begin your Go adventure by establishing a strong foundation. This section covers everything you need to get up and running with Go, understanding its unique syntax, and mastering basic programming constructs. You'll move beyond "Hello, World!" to manipulate data, control program flow, and handle collections efficiently.

Go Kickoff: Concepts & Setup

This mini-course sets the stage for your Go journey. Go is a compiled, statically typed language with a rich standard library, fast builds, and batteries-included tooling. You'll grasp Go's core philosophy and get your development environment ready.

  • Introduction to Go / Go at a Glance β€” Learn what Go is, its history, and why it’s a popular language for modern development. See Go's DNA with tiny runnable examples highlighting its compiled nature, static typing, and standard library.
  • Installing Go & Setting Up the Environment / Tooling β€” Step-by-step instructions to download, install, and set up Go on your system. Verify your toolchain, learn go env basics, and initialize a module with go mod init.
  • Your First Go Program β€” Write, run, and tweak your first "Hello, World!" program in Go. Practice printing, formatting, small functions, and understand the build vs run workflow.
  • Understanding Go Syntax and Structure β€” Learn the basic structure of a Go program, including packages, imports, and the main function.

Variables & Expressions Essentials

Master variables and constants, short declarations (:=), basic types, and iota. Learn zero values and typed vs untyped constants with hands-on snippets. This course deepens your understanding of how Go handles data.

  • Variables, Constants, :=, Types, iota β€” Explore how to declare and use variables and constants in Go. Understand basic data types like integers, floats, strings, and booleans. Delve into zero values and iota patterns for enumeration.
  • Operators β€” Learn arithmetic, comparison, logical, and bitwise operators, including their precedence and the use of parentheses.
  • Type Inference & Conversions β€” Understand type inference with :=, explicit numeric conversions, and conversions between strings, byte slices, and rune slices.

Control Flow I: if/else & switch

Master if/else in Go: basics, init statements, else-if chains, and scope. Learn idioms for errors and boolean style. This is crucial for creating programs that make decisions.

  • If Basics & Init Statements β€” Write basic if statements, combine boolean conditions, and use the init-statement form safely with proper scoping. Learn idioms for errors and boolean style.
  • Else-if Chains & Scoping β€” Build readable else-if chains and understand variable scope inside if blocks, including init statements.
  • switch Essentials (tagged & tagless) β€” Use tagged and tagless switch for multi-way branching; learn default, multiple cases, explicit fallthrough, and init statements.
  • Common Pitfalls & Debugging Messages β€” Spot common mistakes in if/switch code, and use fmt.Println debugging messages to trace logic and scope.

Control Flow II: for & Ranging

Learn the single looping construct in Go: for. Explore standard forms, while-style loops, infinite loops, and practical patterns for iteration.

  • for Loop Patterns β€” Master the different for loop forms in Go: classic three-part, while-style, infinite loops, and loop with break.
  • range over Slices/Maps/Strings β€” Use range to iterate over slices, maps, and strings. Learn index/value pairs, map key/value, and rune iteration.
  • break, continue, Labels (when to use) β€” Control loop execution with break, continue, and labels. Learn when to exit early, skip steps, and break out of nested loops.

Collections I: Arrays & Slices

Learn how Go stores collections of values. Understand fixed-size arrays vs flexible slices, their zero values, and how to create literals. Slices are fundamental for dynamic data handling in Go.

  • Arrays vs Slices (zero values, literals) β€” Compare arrays and slices in Go. Arrays have fixed size; slices are dynamic and more common. Learn zero values and how to create them with literals.
  • Slice Ops: make, append, copy, len/cap β€” Work with slice operations: create with make, grow with append, copy elements, and check length and capacity.
  • Reslicing, Capacity Growth, Gotchas β€” Slices can be resliced to share data. Learn how capacity grows, when appends reallocate, and common pitfalls to avoid.

Collections II: Maps & Strings

Learn how Go works with maps and strings. Create, read, write, and test existence with comma ok. Handle UTF-8 with runes. These data structures are essential for real-world applications.

  • Maps: Create, Read/Write, 'comma ok' β€” Learn to declare maps, add and read keys, update values, and check for presence using the comma ok idiom.
  • Strings, Bytes, Runes (UTF-8 basics) β€” Understand how Go handles strings as UTF-8, how bytes and runes differ, and how to iterate correctly.
  • Mini-Project: Word Frequency Counter β€” Build a simple word frequency counter. Practice strings, runes, and maps together in a real example.

Early Look into Concurrency, Files & Networking (A1)

While often considered more advanced, Go introduces concurrency, file handling, and networking concepts early due to their inherent simplicity and power in the language. This section provides an initial taste, setting the stage for deeper dives later.

  • Introduction to Goroutines β€” Learn about goroutines and how they enable lightweight concurrency.
  • Channels in Go β€” Understand how to communicate between goroutines using channels.
  • Buffered vs. Unbuffered Channels β€” Learn the differences between buffered and unbuffered channels.
  • Select Statement in Go β€” Use the select statement to handle multiple channels.
  • Reading Files in Go β€” Learn how to open and read files.
  • Writing Files in Go β€” Explore writing data to files in Go.
  • File Handling Best Practices β€” Learn best practices for working with files safely and efficiently.
  • Creating a Simple HTTP Server β€” Write a basic HTTP server using Go’s net/http package.
  • Making HTTP Requests β€” Learn how to make GET and POST requests in Go.
  • Building a RESTful API β€” Create a simple REST API using Go.
  • Using Websockets in Go β€” Learn the basics of real-time communication using WebSockets.
  • Pointers in Go β€” Explore pointers and how to work with memory addresses.
  • Structs and Methods (early look) β€” Learn how to define and use structs for grouping data and methods for adding behavior.
  • Interfaces in Go (early look) β€” Understand interfaces and how they support polymorphism.
  • Error Handling in Go (early look) β€” Learn how to handle errors effectively using Go’s error-handling conventions.

Level A2: Intermediate Go - Structuring & Testing Your Code

Move beyond the basics to learn how to organize your Go code effectively using functions, structs, and interfaces. You’ll also learn how to write robust tests, a critical skill for any professional developer.

Functions I: Basics

Learn how to define and use functions in Go, including parameters and simple returns. Functions are the building blocks of any Go application.

  • Defining Functions & Parameters β€” Understand how to declare functions, pass parameters, and call them in Go.
  • Variadic Functions & Error Returns β€” Understand variadic parameters in Go functions, and learn the pattern of returning errors explicitly.

Functions II: Design & Reuse

Learn Go design tools like defer for cleanup, panic for fatal errors, and recover for safe handling. Master advanced error handling and code organization with packages.

  • defer, panic, recover (principles) β€” Understand defer, panic, and recover: cleanup calls, fatal errors, and graceful recovery.
  • Error Handling Idioms (errors.Is/As, wrapping) β€” Learn advanced error handling idioms in Go, including errors.Is, errors.As, and error wrapping for more context.
  • Packages & Modules (imports, go mod init) β€” Learn to organize code with packages and manage dependencies with modules in Go.

Structs & Methods

Learn Go structs and composite literals to bundle fields together and build simple data models. Understand how to add behavior to your data with methods.

  • Structs & Composite Literals β€” Learn to define structs, initialize them with composite literals, and access their fields.
  • Methods (value vs pointer receivers) β€” Learn how to define and use methods with value and pointer receivers in Go.
  • Constructors, Zero Values, Invariants β€” Learn how to build constructors, understand zero values, and enforce invariants in Go structs.

Interfaces & Polymorphism

Learn how Go interfaces enable polymorphism via implicit satisfaction of methods. This powerful concept allows for flexible, decoupled code designs.

  • Interfaces (implicit satisfaction) β€” Learn Go interfaces and how types satisfy them implicitly by implementing methods.
  • Core Interfaces (fmt.Stringer, io.Reader/Writer) β€” Learn core interfaces in Go like fmt.Stringer and io.Reader/Writer for formatting and I/O.
  • Type Assertions & Type Switches β€” Learn type assertions and type switches to safely extract and branch on concrete types from interfaces.

Testing Basics

Learn Go testing basics with the testing package and table-driven tests. Writing tests is crucial for building reliable and maintainable software.

  • testing & Table-Driven Tests β€” Learn how to write tests in Go using the testing package and table-driven test patterns.
  • Benchmarks & Examples β€” Learn how to write benchmarks and example functions in Go tests.
  • Fuzzing (Go 1.18+) β€” Learn fuzz testing introduced in Go 1.18 for discovering edge cases automatically.

Level B1: Concurrency in Depth - Building Concurrent Applications

Go's concurrency model is one of its most celebrated features. This section dives deep into goroutines, channels, and synchronization primitives, enabling you to build highly concurrent and performant applications.

Goroutines & Channels I

Learn Go concurrency fundamentals: launch goroutines, understand their lifecycle, and prepare for channel-based coordination.

  • Goroutines: Launch & Lifecycle β€” Start lightweight threads with go, see ordering effects, and learn what happens when main exits.
  • Unbuffered Channels (sync, handoff) β€” Use unbuffered channels to synchronize goroutines and hand off values directly.
  • Buffered Channels, Closing, Ranging β€” Learn buffered channels, how to close them, and use ranging for clean iteration.

Channels II

Learn advanced channel use: select statements, adding timeouts, and tickers for periodic work. Master patterns for complex concurrent workflows.

  • select, Timeouts & Tickers β€” Use select to multiplex channels, add timeouts, and use tickers for periodic tasks.
  • Fan-in/Fan-out, Worker Pools β€” Combine and distribute work with fan-in/fan-out patterns and worker pools.
  • context for Cancellation/Deadlines β€” Use the context package to cancel goroutines and set deadlines/timeouts gracefully.

Synchronization & Safety

Learn synchronization primitives in Go: Mutex, RWMutex, and Cond for safe concurrent access. Understand how to avoid common concurrency pitfalls.

  • sync (Mutex/RWMutex/Cond) β€” Use Mutex, RWMutex, and Cond from the sync package to coordinate goroutines safely.
  • sync/atomic & Memory Model Basics β€” Use atomic operations for lock-free safety and learn Go memory model basics.
  • Race Detector & Safe Patterns β€” Detect race conditions with Go's built-in race detector and apply safe concurrency patterns.

Concurrency Mini-Project

Apply concurrency skills in a mini-project: design a pipeline or worker pool. This hands-on experience solidifies your understanding of concurrent design.

  • Design (pipeline or pool) β€” Plan a concurrent design: pipeline stages or worker pool architecture.
  • Implementation β€” Implement your chosen design: pipeline stages or worker pool with real code.
  • Profiling (pprof) & Tuning β€” Profile and tune Go concurrency programs using pprof and simple optimizations.

Level B2: Building Real-World Applications & Ecosystem

This section focuses on practical application development, covering file I/O, networking, building RESTful APIs, interacting with databases, and managing project dependencies – essential skills for any backend developer.

Files & Streams

Learn to use os, bufio, io, and fs packages for file and stream operations in Go. Efficient file handling is crucial for many applications.

  • os, bufio, io, fs β€” Work with files and streams using the standard os, bufio, io, and fs packages.
  • Read/Write Files, Line Scanners β€” Read and write files in Go, and scan lines efficiently using bufio.
  • CSV & JSON (encoding/csv, encoding/json) β€” Parse CSV with encoding/csv and encode/decode JSON with encoding/json, vital for data interchange.

HTTP Clients & Servers

Learn to build HTTP servers and clients in Go using the net/http package. This is fundamental for web services and API development.

  • net/http Server, Handlers, Middleware Pattern β€” Build a robust web server with net/http, add handlers, and apply middleware patterns for request processing.
  • HTTP Client, Timeouts, Retries β€” Make HTTP requests with net/http Client, add timeouts, and implement retry logic for resilient communication.
  • Cookies, Headers, Status Codes β€” Work with cookies, headers, and status codes in HTTP responses and requests.

REST APIs with Routers

Learn to build REST APIs with popular router libraries like chi and gin. This provides practical experience in building structured web services.

  • Routing with chi or gin β€” Use chi and gin routers to define routes, handlers, and organize REST APIs effectively.
  • DTOs & Validation β€” Define Data Transfer Object (DTO) structs for requests and validate them using libraries like go-playground/validator.
  • Errors, Logging, Middlewares β€” Learn to handle errors gracefully, add structured logging, and use middlewares for cleaner REST APIs.

Databases

Learn how to connect Go applications to databases using database/sql and drivers. Interact with SQL and NoSQL databases effectively.

  • database/sql & Drivers β€” Use database/sql with drivers to open connections, query, and scan results from relational databases.
  • sqlx or gorm Basics β€” Use sqlx or gorm to simplify database access with helpers and ORM features for more complex interactions.
  • Transactions & context.Context β€” Use transactions to group operations and context.Context to manage deadlines and cancellations for database calls.

Modules & Dependency Management

Understand Go modules, semantic versioning, and replace directives. Proper dependency management is crucial for large-scale Go projects.

  • Go Modules, Versioning, replace β€” Go modules manage project dependencies, versioning, and local replacements.
  • Private Modules & GOPRIVATE β€” Work with private Go modules and configure GOPRIVATE for authentication and proxy skipping.
  • Workspaces (go work), Toolchains β€” Use go work for multi-module workspaces and toolchains for Go version management.

Level C1: Advanced Go - Performance & Modern Features

At this level, you'll explore Go's advanced features, including generics, memory management, and performance profiling. These topics are essential for building highly optimized and scalable Go applications.

Generics I

Learn Go generics: type parameters syntax, constraints, and usage. Generics allow you to write more flexible and reusable code.

  • Type Parameters Syntax β€” Introduce Go generics with type parameters syntax and simple usage.
  • Constraints & comparable β€” Learn constraints on type parameters and the comparable constraint for equality checks.

Generics II

Master Go generics with useful constraints: any and ~ (underlying types). Understand their performance implications and real-world applications.

  • Useful Constraints (~), any β€” Learn useful constraints in Go generics: any and ~ for underlying types.
  • Performance Notes & Pitfalls β€” Understand performance considerations and common pitfalls when using generics.
  • Real-World Patterns (sets, maps) β€” See real-world generic patterns: sets with maps, and utility functions.

Memory, GC & Escape Analysis

Understand Go's memory model, garbage collection, and escape analysis. Optimizing memory usage is key for high-performance Go applications.

  • Stack vs Heap, Escape Analysis β€” Learn Go stack vs heap allocation and how escape analysis decides placement.
  • Garbage Collector Behavior β€” Learn how Go garbage collector works and what it means for performance.
  • Reducing Allocations β€” Learn strategies to reduce allocations in Go and improve performance.

Performance & Profiling

Learn Go performance profiling with pprof: CPU, heap, and block profiles. Identify and resolve performance bottlenecks in your applications.

  • CPU/Heap/Block Profiles (pprof) β€” Learn how to capture and analyze CPU, heap, and block profiles using pprof.
  • Tracing & Hotspots β€” Use Go tracing to spot hotspots and understand execution flow.

CLI Apps & Tooling

Learn to build powerful command-line apps with cobra, structured logging, and configuration management. Master Go's tooling for better development workflows.

  • CLI with cobra β€” Build a simple CLI with cobra and explore commands, flags, and structure.
  • Logging (slog, zap) & Config (env/flags) β€” Add structured logging with slog/zap and manage configuration via environment variables and flags.
  • Build Flags, Linting, Vet β€” Use build flags, linting, and vet to improve builds and code quality.

Level C2: Production-Ready Go - Microservices, Security & Deployment

This is where you'll learn to build, deploy, and maintain robust, secure, and observable Go microservices in production environments. Master advanced topics crucial for enterprise-grade applications.

Microservice Patterns

Learn Go microservice patterns with service layout and layered architecture. Design and implement scalable and maintainable microservices.

  • Service Layout & Layers β€” Organize Go microservices with a clean layout and clear layers.
  • Config Management & Secrets β€” Manage configuration and secrets securely in Go microservices.
  • Health/Readiness/Graceful Shutdown β€” Add health and readiness endpoints, plus graceful shutdown to Go services.

Observability

Learn observability in Go with structured logging, metrics, and tracing. Monitor your applications effectively in production.

  • Structured Logs β€” Use structured logs for better observability in Go microservices.
  • Metrics (Prometheus) & Tracing (OTel) β€” Expose metrics with Prometheus and trace requests using OpenTelemetry.
  • pprof in Production β€” Use pprof to profile Go apps in production and diagnose performance issues.

Security & Robustness

Secure Go microservices with TLS, CSRF protection, and HTTP security headers. Learn to build applications that are resilient to common attacks.

  • TLS Basics, CSRF/Headers β€” Learn TLS basics, CSRF protection, and HTTP security headers in Go.
  • Input Validation & Safe Defaults β€” Validate input carefully and use safe defaults in Go microservices to prevent vulnerabilities.
  • Dependency & Vulnerability Scans β€” Scan Go dependencies for vulnerabilities and keep them updated.

Deployment & DevOps

Deploy Go applications efficiently with Docker multi-stage builds for smaller, safer images. Understand CI/CD principles for automated deployments.

  • Docker Multi-Stage Builds β€” Use Docker multi-stage builds to keep Go images small and secure.
  • Cross-Compilation, Build Tags β€” Learn Go cross-compilation and build tags for flexible deployments across different platforms.
  • CI/CD Basics β€” Automate builds, tests, and deployments with CI/CD basics in Go projects.

Advanced Topics

Explore advanced Go features such as CGO, reflection, and plugins. Understand their use cases and trade-offs for highly specialized scenarios.

  • CGO Basics & Trade-offs β€” Learn how Go can interoperate with C using CGO, and its trade-offs.
  • Reflection & Plugins β€” Understand Go reflection and plugins, with use cases and trade-offs.
  • Build Constraints & Advanced Generics β€” Control builds with constraints and design powerful yet safe generics for complex problems.

What You'll Learn

By completing the CoddyKit Go (Golang) curriculum, you will:

  • Master Go's syntax, data types, control flow, and fundamental programming constructs.
  • Gain proficiency in working with Go's powerful collection types: arrays, slices, and maps.
  • Understand and apply Go's unique and efficient concurrency model using goroutines and channels.
  • Learn to design, implement, and test robust functions, structs, and interfaces for modular code.
  • Develop skills in building and interacting with HTTP clients and servers, including RESTful APIs.
  • Connect Go applications to various databases and manage data effectively.
  • Explore advanced Go features like generics, memory management, and performance profiling.
  • Discover best practices for organizing, securing, and deploying production-ready Go microservices.
  • Become adept at using Go's built-in tooling for testing, dependency management, and code quality.

Who Is This Course For?

This comprehensive Go (Golang) curriculum is ideal for:

  • Aspiring Backend Developers: Those looking to kickstart a career in backend or cloud-native development with a modern, high-performance language.
  • Experienced Developers: Programmers from other languages (Python, Java, Node.js, C#, etc.) who want to learn Go for its concurrency, performance, and simplicity.
  • DevOps Engineers: Professionals interested in writing powerful command-line tools, automation scripts, and microservices in Go.
  • Anyone Interested in High-Performance Computing: Individuals keen on building scalable systems, networking applications, and concurrent services.
  • Students and Hobbyists: Eager to learn a versatile language backed by a strong community and industry adoption.

Embark on your journey to becoming a proficient Go developer today! With CoddyKit's structured curriculum, hands-on lessons, and expert guidance, you'll gain the skills and confidence to build powerful, efficient, and scalable applications. Enroll now and unlock your potential in the world of Go programming!

Start Learning β†’

How You'll Learn

🎯
Interactive Lessons
Hands-on coding exercises with real-time feedback
πŸ€–
AI Tutor
Get instant help from our AI when you're stuck
πŸ’»
Built-in Editor
Write and run code directly in your browser
πŸ†
Certificate
Earn a certificate when you complete the course
Curriculum

50 Courses

Every course in the Go Academy learning path.

01

Go Basics: Variables, Types & Zero Values

A14 lessons

Learn Go's type system, variable declarations with var and :=, zero values, and constants including iota.

  • Declaring Variables in Go
  • Go's Built-in Types
  • Constants and iota
  • +1 more
02

Control Flow: if, for, switch

A14 lessonsPRO

Master Go's control flow constructs including if with init statements, the versatile for loop, and switch.

  • if Statements and Init Expressions
  • The for Loop: All Patterns
  • switch Statements in Go
  • +1 more
03

Functions & Multiple Return Values

A24 lessonsPRO

Understand Go functions: signatures, variadic params, named returns, defer, and first-class functions.

  • Function Basics and Signatures
  • Multiple Return Values
  • Variadic Functions
  • +1 more
04

Arrays, Slices & Maps

A24 lessonsPRO

Deep dive into Go collections: fixed arrays, dynamic slices, and hash maps with idiomatic usage patterns.

  • Arrays: Fixed-Length Collections
  • Slices: Dynamic Lists
  • Maps: Key-Value Stores
  • +1 more
05

Go Strings and the strings Package

A24 lessonsPRO

Go Strings and the strings Package: Runes vs Bytes, strings Package Functions, and more.

  • Runes vs Bytes
  • strings Package Functions
  • strings.Builder
  • +1 more
06

Formatting with fmt and Stringer

A24 lessonsPRO

Formatting with fmt and Stringer: Printf Verbs, Sprintf and Fprintf, and more.

  • Printf Verbs
  • Sprintf and Fprintf
  • The Stringer Interface
  • +1 more
07

Go Time and the time Package

A24 lessonsPRO

Go Time and the time Package: Time and Duration, Formatting and Parsing, and more.

  • Time and Duration
  • Formatting and Parsing
  • Timers and Tickers
  • +1 more
08

Go Structs & Methods Fundamentals

B14 lessonsPRO

Model data with structs, attach behavior via methods, and understand value vs pointer receivers.

  • Defining and Using Structs
  • Methods on Structs
  • Constructor Patterns
  • +1 more
09

Pointers in Go

B14 lessonsPRO

Understand Go pointers: memory addresses, dereferencing, pointer receivers, and when to use pointers.

  • What Are Pointers?
  • Pointers and Functions
  • Pointer Receivers on Methods
  • +1 more
10

Go Interfaces & Duck Typing

B14 lessonsPRO

Learn Go's implicit interface system, define and implement interfaces, use type assertions and switches.

  • Defining and Implementing Interfaces
  • Core Standard Library Interfaces
  • Type Assertions and Type Switches
  • +1 more
11

Error Handling in Go

B14 lessonsPRO

Master Go's explicit error handling: the error interface, errors.Is/As, wrapping, and custom error types.

  • The error Interface
  • Creating Custom Errors
  • Error Wrapping and Unwrapping
  • +1 more
12

Go Packages & Modules

B14 lessonsPRO

Organize Go code with packages, manage dependencies with Go modules, and understand visibility rules.

  • Packages: Organizing Go Code
  • Go Modules with go mod
  • Adding External Dependencies
  • +1 more
13

Go Standard Library Essentials

B14 lessonsPRO

Tour the most important Go standard library packages: fmt, strings, strconv, math, time, and os.

  • fmt and strings Packages
  • strconv, math and sort
  • time Package Essentials
  • +1 more
14

Go Regular Expressions

B14 lessonsPRO

Go Regular Expressions: regexp Basics, Finding and Extracting, and more.

  • regexp Basics
  • Finding and Extracting
  • Replacing Text
  • +1 more
15

Go Sorting and the sort Package

B14 lessonsPRO

Go Sorting and the sort Package: Sorting Slices, Custom Sort Orders, and more.

  • Sorting Slices
  • Custom Sort Orders
  • Searching Sorted Data
  • +1 more
16

Go Maps Deep Dive

B14 lessonsPRO

Go Maps Deep Dive: Map Internals, Checking Existence, and more.

  • Map Internals
  • Checking Existence
  • Maps as Sets
  • +1 more
17

Go Struct Tags and Validation

B14 lessonsPRO

Go Struct Tags and Validation: What Are Struct Tags, JSON Tags, and more.

  • What Are Struct Tags
  • JSON Tags
  • Validation Libraries
  • +1 more
18

Go Encoding Formats

B14 lessonsPRO

Go Encoding Formats: encoding/json Recap, encoding/xml, and more.

  • encoding/json Recap
  • encoding/xml
  • encoding/csv
  • +1 more
19

File I/O & Working with JSON

B14 lessonsPRO

Read and write files with os and bufio, encode and decode JSON with encoding/json, and handle CSV data.

  • Reading Files with os and bufio
  • Writing Files and Temp Files
  • JSON Encoding and Decoding
  • +1 more
20

Go bufio and Efficient I/O

B14 lessonsPRO

Go bufio and Efficient I/O: Buffered Readers, Scanners, and more.

  • Buffered Readers
  • Scanners
  • Buffered Writers
  • +1 more
21

Go Embedding and Composition

B14 lessonsPRO

Go Embedding and Composition: Struct Embedding, Interface Embedding, and more.

  • Struct Embedding
  • Interface Embedding
  • Method Promotion
  • +1 more
22

Goroutines & Channel Fundamentals

B24 lessonsPRO

Launch goroutines, communicate via channels, and understand Go's concurrency model with buffered channels.

  • Launching Goroutines
  • Unbuffered Channels
  • Buffered Channels
  • +1 more
23

Select Statement & Channel Patterns

B24 lessonsPRO

Use select for multi-channel communication, implement fan-in/fan-out, timeouts and worker pools.

  • The select Statement
  • Timeouts and Tickers
  • Fan-in and Fan-out Patterns
  • +1 more
24

Mutexes & sync Package

B24 lessonsPRO

Protect shared state with Mutex, RWMutex, Once, and WaitGroup from Go's sync package.

  • sync.Mutex and sync.RWMutex
  • sync.WaitGroup
  • sync.Once and sync.Map
  • +1 more
25

Context Package for Cancellation

B24 lessonsPRO

Use context.Context to propagate cancellation, deadlines, and request-scoped values across goroutines.

  • Why context.Context Exists
  • WithCancel and WithTimeout
  • WithDeadline and WithValue
  • +1 more
26

HTTP Server with net/http

B24 lessonsPRO

Build HTTP servers in Go using net/http: handlers, ServeMux, middleware, and graceful shutdown.

  • Creating an HTTP Server
  • Routing and Path Parameters
  • Middleware Pattern
  • +1 more
27

HTTP Client & REST API Consumption

B24 lessonsPRO

Consume REST APIs with Go's http.Client: timeouts, headers, auth, JSON parsing, and retries.

  • Making HTTP Requests
  • Setting Timeouts and Headers
  • Decoding JSON Responses
  • +1 more
28

Go Testing Strategies

B24 lessonsPRO

Write effective tests with Go's testing package: table-driven tests, subtests, mocks, and test coverage.

  • Writing Unit Tests with testing
  • Table-Driven Tests
  • Test Doubles: Mocks and Stubs
  • +1 more
29

Go Generics: Type Parameters & Constraints

B24 lessonsPRO

Master Go 1.18+ generics: type parameters, constraints, comparable, and real-world generic patterns.

  • Type Parameters Syntax
  • Constraints: comparable and interfaces
  • Generic Data Structures
  • +1 more
30

Go io.Reader and io.Writer

B24 lessonsPRO

Go io.Reader and io.Writer: The Reader Interface, The Writer Interface, and more.

  • The Reader Interface
  • The Writer Interface
  • io Utility Functions
  • +1 more
31

Go Functional Options Pattern

B24 lessonsPRO

Go Functional Options Pattern: The Problem with Many Params, Option Functions, and more.

  • The Problem with Many Params
  • Option Functions
  • Building a Flexible API
  • +1 more
32

Go Rate Limiting

B24 lessonsPRO

Go Rate Limiting: Token Bucket Concept, golang.org/x/time/rate, and more.

  • Token Bucket Concept
  • golang.org/x/time/rate
  • Throttling Goroutines
  • +1 more
33

Go database/sql Fundamentals

B24 lessonsPRO

Go database/sql Fundamentals: Opening a Connection, Querying Rows, and more.

  • Opening a Connection
  • Querying Rows
  • Prepared Statements
  • +1 more
34

Building CLI Apps with Cobra

B24 lessonsPRO

Build professional command-line tools with Cobra: commands, flags, subcommands, config, and distribution.

  • Cobra Fundamentals
  • Flags and Persistent Flags
  • Subcommands and Command Groups
  • +1 more
35

Database Access with sqlx & pgx

B24 lessonsPRO

Query PostgreSQL from Go using database/sql, sqlx for struct scanning, and pgx for high-performance access.

  • database/sql and Drivers
  • sqlx: Struct Scanning and Named Queries
  • pgx: High-Performance PostgreSQL Driver
  • +1 more
36

Building REST APIs with Gin

B24 lessonsPRO

Create production REST APIs with the Gin framework: routing, binding, validation, and error handling.

  • Gin Router and Route Groups
  • Request Binding and Validation
  • Response Helpers and Status Codes
  • +1 more
37

Middleware Patterns in Go

B24 lessonsPRO

Design reusable HTTP middleware: logging, rate limiting, auth, CORS, and request ID injection.

  • HTTP Middleware Chain Fundamentals
  • Logging and Request ID Middleware
  • Auth and Rate Limiting Middleware
  • +1 more
38

Deploying Go Applications with Docker

B24 lessonsPRO

Containerize Go binaries with multi-stage Docker builds, Docker Compose, environment config, and health checks.

  • Multi-Stage Docker Builds for Go
  • Environment Config and Secrets
  • Docker Compose for Local Development
  • +1 more
39

Go GORM ORM

B24 lessonsPRO

Go GORM ORM: Models and AutoMigrate, CRUD Operations, and more.

  • Models and AutoMigrate
  • CRUD Operations
  • Associations
  • +1 more
40

Go Configuration with Viper

B24 lessonsPRO

Go Configuration with Viper: Reading Config Files, Environment Variables, and more.

  • Reading Config Files
  • Environment Variables
  • Defaults and Watching
  • +1 more
41

Go Structured Logging with slog

B24 lessonsPRO

Go Structured Logging with slog: Why Structured Logs, slog Handlers, and more.

  • Why Structured Logs
  • slog Handlers
  • Log Levels and Attributes
  • +1 more
42

Go WebSockets

B24 lessonsPRO

Go WebSockets: WebSocket Basics, Using gorilla/websocket, and more.

  • WebSocket Basics
  • Using gorilla/websocket
  • Broadcasting Messages
  • +1 more
43

Go Cron Jobs and Scheduling

B24 lessonsPRO

Go Cron Jobs and Scheduling: Time-Based Scheduling, The robfig/cron Library, and more.

  • Time-Based Scheduling
  • The robfig/cron Library
  • Tickers for Intervals
  • +1 more
44

Go Benchmarking & pprof Profiling

C14 lessonsPRO

Measure and optimize Go code with benchmarks, pprof CPU/heap profiles, and execution traces.

  • Writing Benchmarks with testing.B
  • CPU Profiling with pprof
  • Heap and Allocation Profiling
  • +1 more
45

Go Worker Pools and Pipelines

C14 lessonsPRO

Go Worker Pools and Pipelines: Worker Pool Pattern, Fan-Out Fan-In, and more.

  • Worker Pool Pattern
  • Fan-Out Fan-In
  • Pipeline Stages
  • +1 more
46

Advanced Concurrency Patterns

C14 lessonsPRO

Build production-grade concurrent systems with pipelines, errgroup, semaphores, and the reactor pattern.

  • Pipeline and Stage Patterns
  • errgroup for Concurrent Error Handling
  • Semaphore Pattern
  • +1 more
47

gRPC with Go

C14 lessonsPRO

Define services with Protocol Buffers, generate Go code, implement unary and streaming gRPC services.

  • Protocol Buffers and .proto Files
  • Implementing a Unary gRPC Service
  • Server and Client Streaming
  • +1 more
48

Reflection & the reflect Package

C14 lessonsPRO

Inspect and manipulate types at runtime with reflect: Kind, Value, struct tags, and dynamic invocation.

  • reflect.Type and reflect.Value
  • Inspecting Struct Fields and Tags
  • Dynamic Function Calls
  • +1 more
49

Plugin System in Go

C14 lessonsPRO

Build extensible Go applications with plugin packages, interfaces, and dynamic loading on Linux.

  • Go plugin Package Basics
  • Designing a Plugin Interface
  • Dynamic Loading and Symbols
  • +1 more
50

Go Memory Model & Garbage Collector

C14 lessonsPRO

Understand Go's memory model, happens-before rules, stack vs heap, escape analysis, and GC tuning.

  • Stack vs Heap and Escape Analysis
  • The Go Memory Model and Happens-Before
  • Garbage Collector Internals
  • +1 more

Start Go Academy Now

Join thousands of learners mastering programming with AI-powered lessons.

Get Started Free β†’Browse All Courses