Intro: Design Guidelines Intro 1.1 Prepare Your Mind 1.2 - Productivity vs. Performance 1.3 - Correctness vs. Performance 1.4 - Code Reviews 1.5 - If Performance Matters 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 Garbage Collection Addendum Part 1 Garbage Collection Addendum Part 2 Garbage Collection Addendum Part 3 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 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 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 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 Intro - Packaging 7.1 - Language Mechanics & Design Guidelines 7.2 - Package-Oriented Design Intro - Goroutines 8.1 - OS Scheduler Mechanics 8.2 - Go Scheduler Mechanics 8.3 - Creating Go Routines Intro - Data Races 9.1 - Managing Data Races 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 Intro - Concurrency Patterns 11.1 - Failure Detection 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 Intro - Benchmarking 13.1 - Basic Benchmarking 13.2 - Validate Benchmarking 13.3 - CPU-Bound Benchmarking 13.4 - IO-Bound Benchmarking 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