Course curriculum

We will talk about semantics, guidelines, mechanical sympathy and data oriented design. We are going to talk about package oriented design and how to structure your Go projects for the long term.

  • 1

    Design Guidelines

    • Intro: Design Guidelines Intro
    • Course Materials
    • 1.1 Prepare Your Mind
    • 1.2 - Productivity vs. Performance
    • 1.3 - Correctness vs. Performance
    • 1.4 - Code Reviews
    • 1.5 - If Performance Matters
  • 2

    Memory & Data Semantics

    • Intro: Memory & Data Semantics
    • 2.1 Variables
    • 2.2 Struct Types
    • 2.3.1 - Pointers-Part 1 (Pass by Values)
    • 2.3.2 - Pointers-Part 2 (Sharing Data)
    • 2.3.3 - Pointers-Part 3 ( Escape Analysis)
    • 2.3.4 - Pointers-Part 3 ( Stack Growth)
    • 2.3.5 - Pointers-Part 3 ( Garbage Collection)
    • 2.4 - Constants
  • 3

    Data Structures

    • Intro - Data Structures
    • 3.1 - Arrays-Part 1 (Mechanical Sympathy)
    • 3.2.1 - Arrays-Part 2 (Semantics)
    • 3.2.2 - Arrays-Part 3 (Range Mechanics)
    • 3.3.1 - Slices-Part 1 (Declare, Length & Reference Types)
    • 3.3.2 - Slices-Part 2 (Appending Slices)
    • 3.3.3-Slices-Part 3 (Taking Slices of Slices)
    • 3.3.4 - Slices-Part 4 (Slices & References)
    • 3.3.5 - Slices-Part 5 (Strings & Slices)
    • 3.3.6 - Slices-Part 6 (Range Mechanics)
    • 3.4 - Maps
  • 4

    Decoupling

    • Intro - Decoupling
    • 4.1.1 - Methods-Part 1 (Value & Pointer Semantics)
    • 4.1.2 - Methods-Part 2 (Function/Method Variables)
    • 4.2.1 - Interfaces-Part 1 (Polymorphism)
    • 4.2.2 - Interfaces-Part 1 (Method Sets & Address of Value)
    • 4.2.3 - Interfaces-Part 3 (Storage by Value)
    • 4.2.4 - Interfaces-Part 4 (Type Assertion)
    • 4.3 - Embedding
    • 4.4 - Exporting
  • 5

    Composition

    • Intro - Composition
    • 5.1 - Grouping Types
    • 5.2.1 - Decoupling-Part 1
    • 5.3.1 - Conversion & Assertions-Part 1
    • 5.3.2 - Conversion & Assertions-Part 2
    • 5.4 - Interface Pollution
    • 5.5 - Mocking
  • 6

    Error Handling

    • Intro - Error Handling
    • 6.1 - Default Error Values
    • 6.2 - Error Variables
    • 6.3 - Types as Context
    • 6.4 - Behavior as Context
    • 6.5 - Find the Bug
    • 6.6 - Wrapping Errors
  • 7

    Packaging

    • Intro - Packaging
    • 7.1 - Language Mechanics & Design Guidelines
    • 7.2 - Package-Oriented Design
  • 8

    Goroutines

    • Intro - Goroutines
    • 8.1 - OS Scheduler Mechanics
    • 8.2 - Go Scheduler Mechanics
    • 8.3 - Creating Go Routines
  • 9

    Data Races

    • Intro - Data Races
    • 9.1 - Managing Data Races
  • 10

    Channels

    • Intro - Channels
    • 10.1 - Signaling Semantics
    • 10.2 - Basic Patterns
    • 10.3 - Fan Out
    • 10.4 - Wait for Task
    • 10.5 - Pooling
    • 10.6 - Fan Out Semaphore
    • 10.7 - Fan Out Bounded
    • 10.8 - Drop Pattern
    • 10.9 - Cancellation Pattern
  • 11

    Concurrency Patterns

    • Intro - Concurrency Patterns
    • 11.1 - Failure Detection
  • 12

    Testing

    • Intro - Testing
    • 12.1 - Basic Unit Testing
    • 12.2 - Table Unit Testing
    • 12.3 - Mocking Web Server Response
    • 12.4 - Testing Internal Endpoints
    • 12.5 - Sub Tests
    • 12.6 - Code Coverage
  • 13

    Benchmarking

    • Intro - Benchmarking
    • 13.1 - Basic Benchmarking
    • 13.2 - Validate Benchmarking
    • 13.3 - CPU-Bound Benchmarking
    • 13.4 - IO-Bound Benchmarking
  • 14

    Profiling & Tracing

    • Intro - Profiling & Tracing
    • 14.1 Profiling Guidelines
    • 14.2 Stack Traces
    • 14.3 Micro Level Optimization
    • 14.4 Macro Level Optimization
    • 14.5 Execution Tracing

Looking For A Team Membership?

If you have a team of engineers that can benefit from our courses, we have a business account for you.

With a business membership you get:

  • Group discounts based on volume
  • Easy enrollment for your team members
  • Track your team's progress through the course
  • Custom curriculum progress settings
  • Live training discounts
  • Exclusive content
Request a Quote