- Packages
- Imports
- Exported names
- Functions
- Functions continued
- Multiple results
- Named return values
- Variables
- Variables with initializers
- Short variable declarations
- Basic types
- Zero values
- Type conversions
- Type inference
- Constants
- Numeric Constants
- Congratulations!
- For
- For continued
- For is Go's "while"
- Forever
- If
- If with a short statement
- If and else
- Exercise: Loops and Functions
- Switch
- Switch evaluation order
- Switch with no condition
- Defer
- Stacking defers
- Congratulations!
- Pointers
- Structs
- Struct Fields
- Pointers to structs
- Struct Literals
- Arrays
- Slices
- Slices are like references to arrays
- Slice literals
- Slice defaults
- Slice length and capacity
- Nil slices
- Creating a slice with make
- Slices of slices
- Appending to a slice
- Range
- Range continued
- Exercise: Slices
- Maps
- Map literals
- Map literals continued
- Mutating Maps
- Exercise: Maps
- Function values
- Function closures
- Exercise: Fibonacci closure
- Congratulations!
- Methods
- Methods are functions
- Methods continued
- Pointer receivers
- Pointers and functions
- Methods and pointer indirection
- Methods and pointer indirection (2)
- Choosing a value or pointer receiver
- Interfaces
- Interfaces are implemented implicitly
- Interface values
- Interface values with nil underlying values
- Nil interface values
- The empty interface
- Type assertions
- Type switches
- Stringers
- Exercise: Stringers
- Errors
- Exercise: Errors
- Readers
- Exercise: Readers
- Exercise: rot13Reader
- Images
- Exercise: Images
- Congratulations!