The Ultimate Go Study Guide is a collection of notes taken by Hoanh An for students taking the Ultimate Go class. It is compiled of sample programs with line-by-line comments to help students follow the code better.
Please be aware that this material is no longer being maintained and people should look at the GoTraining repo directly for this content. Ardan Labs can't warranty the accuracy of this material.
https://github.com/ardanlabs/gotraining
The Ultimate Go Notebook was written to suppliment learning from the material in the Go Training repo.
https://education.ardanlabs.com/courses/ultimate-go-notebook
- Design Philosophy: Guideline
- Language Mechanics
- Syntax
- Variable: Built-in types | Zero value concept | Initialization | Conversion vs Casting
- Struct: Initialization | Name type vs Anonymous type
- Pointer:
- Constant: Initialization | iota
- Function: Initialization
- Data Structures
- Decoupling
- Method:
- Interface:
- Embedding:
- Exporting:
- Syntax
- Software Design
- Composition:
Guideline
- Grouping types:
- Decoupling:
- Conversion:
- Interface Pollution:
- Mocking:
- Error Handling:
- Packaging: Guideline
- Dependency management: Go Modules
- Composition:
Guideline
- Concurrency
- Mechanics
- Goroutine:
- Data race:
- Channel:
- Guideline
- Language Mechanics | Unbuffered channel: Signaling with(out) data
- Unbuffered channel: Double signal | Buffered channel: Close and range | Unbuffered channel: select and receive | Unbuffered channel: select and send | Buffered channel: Select and drop
- Unbuffered channel (Tennis match)
- Unbuffered channel (Replay race)
- Buffered channel: Fan Out
- Select
- Patterns
- Context:
- Pattern
- Task
- Logger
- Mechanics
- Testing and Profiling
- Testing:
- Benchmarking
- Fuzzing
- Profiling
- Stack Trace: Review | Packing
- GODEBUG: Memory Tracing