hoanhan101/ultimate-go
Ultimate Go study guide, with heavily documented code and programs analysis, all in 1 place
repo name | hoanhan101/ultimate-go |
repo link | https://github.com/hoanhan101/ultimate-go |
homepage | https://hoanhan101.github.io/2020/01/06/101-challenges |
language | Go |
size (curr.) | 1151 kB |
stars (curr.) | 7537 |
created | 2018-04-28 |
license | MIT License |
Ultimate Go study guide
101+ coding interview problems with detailed solutions, test cases, and program analysis →
Motivation
This repo contains my notes on learning Go and computer systems. Different people have different learning style. For me, I learn best by doing and walking through examples. Hence, I am trying to take notes carefully and comment directly on the source code, rather than writing up Markdown files. That way, I can understand every single line of code as I am reading and also be mindful of the theories behind the scene.
In the mix, I also include links to other articles that I find helpful.
If you’re interested in getting updates for this, feel free to join my mailing list here →
Table of Contents
- 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
- 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
- Packages
- Context
- Encoding
- IO
- Logging
- Reflection
References
- Ultimate Go Programming
- ardanlabs/gotraining/topics/courses/go
- Computer Systems: A Programmer’s Perspective
- Free Gophers Pack