GitHub - hoanhan101/ultimate-go: Ultimate Go study guides, with heavily document...
source link: https://github.com/hoanhan101/ultimate-go
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Ultimate Go
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.
References:
- Ultimate Go Programming
- ardanlabs/gotraining/topics/courses/go
- Computer Systems: A Programmer's Perspective
Project Status
It is a work in progress.
Below are the outline of the all topics. Normally, a topic is covered when there is a link, or several links next to it.
Tasks
- Phase 1: Finish Ultimate Go Programming's video lectures
- Phase 2: Fill in all the missing details using Ardan Labs's links and examples
- Phase 3: Study Computer Systems book to reinforce the theory. Build more programs if needed.
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
Stargazers over time
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK