- Exercise 1 - Hello, world!
- Exercise 2 - Short Declaration and Assignment of Variables
- Exercise 3 - Explicit Variable Declaration
- Exercise 4 - Combining Variables into a String
- Exercise 5 - Custom Types
- Exercise 6 - Custom Types and Type Conversion
- Exercise 1 - Number Base Conversion
- Exercise 2 - Comparison of Values
- Exercise 3 - Explicit and Implicit Declaration of Constants
- Exercise 4 - Bit Shift
- Exercise 5 - Raw String
- Exercise 6 - iota
- Exercise 1 - Numbers from 1 to 10000
- Exercise 2 - Unicode Code Points
- Exercise 3 - Birth Year to Current Year with For Condition
- Exercise 4 - Birth Year to Current Year with For
- Exercise 5 - Remainder of Division by 4
- Exercise 6 - If Condition
- Exercise 7 - If Condition with Else If and Else
- Exercise 8 - Switch Statement
- Exercise 9 - Favorite Sport with Switch Statement
- Exercise 10 - Logical Operators
- Exercise 1 - Array Values and Type
- Exercise 2 - Slice Values and Type
- Exercise 3 - Slice of Slice
- Exercise 4 - Append Values to Slice
- Exercise 5 - Append Slices of Slice to other Slice
- Exercise 6 - Slice Length, Capacity and Values (without range)
- Exercise 7 - Two-Dimensional Slice
- Exercise 8 - Map
- Exercise 9 - Add New Data to the Map
- Exercise 10 - Remove Map Data
- Exercise 1 - Slice of Structs with a Nested Slice
- Exercise 2 - Map of Strings to Structs with a slice
- Exercise 3 - Composite Types
- Exercise 4 - Anonymous Struct
- Exercise 1 - Return Values
- Exercise 2 - Sum of Slice Values
- Exercise 3 - Defer
- Exercise 4 - Name and Age Function with Receiver
- Exercise 5 - Shapes Area Functions with Parameter and Receiver
- Exercise 6 - Anonymous Function
- Exercise 7 - Anonymous Function Assigned to Variable
- Exercise 8 - Nested Anonymous Functions in a Variable
- Exercise 9 - Callback
- Exercise 10 - Closure
- Exercise 1 - Memory Address
- Exercise 2 - Setter Method with Pointer Receiver
- Exercise 1 - JSON Marshal
- Exercise 2 - JSON Unmarshal
- Exercise 3 - Method Chaining with NewEnconder() and Encode()
- Exercise 4 - Sorting Slice Values
- Exercise 5 - Sorting a Slice of Structs
- Exercise 1 - Goroutines
- Exercise 2 - Pointer Receiver Methods and Interface-Based Functions
- Exercise 3 - Race Condition in Goroutines
- Exercise 4 - Solving Race Condition with Mutex
- Exercise 5 - Solving Race Condition with Atomic
- Exercise 6 - OS and ARCH
- Exercise 1 - Channel
- Exercise 2 - Channel Type
- Exercise 3 - Channel Generator with Range and Close
- Exercise 4 - Channel Generator with Completion Signal
- Exercise 5 - Comma-Ok Idiom
- Exercise 6 - Range over Closed Channel
- Exercise 7 - Multiple Goroutines Sending to a Shared Channel
- Exercise 1 - Error Handling with log.Println()
- Exercise 2 - Error Formatting with fmt.Errorf() and log.Fatalf()
- Exercise 3 - Custom Error with builtin.error Interface
- Exercise 4 - Custom Error with Additional Fields
- Exercise 5 - Basic Unit Testing with testing.T
- Exercise 1 - Creating and Documenting a Custom Package
- Exercise 2 - Publishing and Testing Package Documentation on pkg.go.dev
- Exercise 3 - Navigating Standard Library Documentation with godoc