Summary
# 
 
headless: true
bookhidden: true
# 
 
SUMMARY  
preface  
introduction  
setup  
Specification 
[go spec](Specification/go spec.md) 
 
 
Toolchain 
[instrumentation in go](Toolchain/instrumentation in go.md) 
Compiler 
[aliases, simple and efficient](Toolchain/Compiler/aliases, simple and efficient.md) 
[builds & linker"s timeline](Toolchain/Compiler/builds & linker"s timeline.md) 
[built-in functions optimizations](Toolchain/Compiler/built-in functions optimizations.md) 
[how “go build” works](Toolchain/Compiler/how “go build” works.md) 
[how are loops translated to assembly](Toolchain/Compiler/how are loops translated to assembly.md) 
[how to take advantage of symbols tables](Toolchain/Compiler/how to take advantage of symbols tables.md) 
[inline strategy & limitation](Toolchain/Compiler/inline strategy & limitation.md) 
[introduction to the escape analysis](Toolchain/Compiler/introduction to the escape analysis.md) 
[introduction to the go compiler ssa backend](Toolchain/Compiler/introduction to the go compiler ssa backend.md) 
[introduction to the go compiler](Toolchain/Compiler/introduction to the go compiler.md) 
[language semantics on escape analysis](Toolchain/Compiler/language semantics on escape analysis.md) 
[memory safety with bounds check](Toolchain/Compiler/memory safety with bounds check.md) 
[overview of the compiler](Toolchain/Compiler/overview of the compiler.md) 
[slice and memory management](Toolchain/Compiler/slice and memory management.md) 
[understanding compiler directives](Toolchain/Compiler/understanding compiler directives.md) 
 
 
Linker 
[build a better linker](Toolchain/Linker/build a better linker.md) 
[builds & linker"s timeline](Toolchain/Linker/builds & linker"s timeline.md) 
[how “go build” works](Toolchain/Linker/how “go build” works.md) 
[object file & relocations](Toolchain/Linker/object file & relocations.md) 
 
 
ABI 
[go register ABI](Toolchain/ABI/go register ABI.md) 
 
 
AST 
[visualize your go code](Toolchain/AST/visualize your go code.md) 
 
 
 
 
Memory 
MemoryAllocation 
[demystifying memory management in modern programming languages](Memory/MemoryAllocation/demystifying memory management in modern programming languages.md) 
[memory management and allocation](Memory/MemoryAllocation/memory management and allocation.md) 
[memory management and memory sweep](Memory/MemoryAllocation/memory management and memory sweep.md) 
[slice and memory management](Memory/MemoryAllocation/slice and memory management.md) 
[visualizing memory management in go](Memory/MemoryAllocation/visualizing memory management in go.md) 
 
 
GarbageCollection 
[an insight into go garbage collector](Memory/GarbageCollection/an insight into go garbage collector.md) 
finalizers  
[go GC: latency problem solved](Memory/GarbageCollection/go GC: latency problem solved.md) 
[go GC: prioritizing low latency and simplicity](Memory/GarbageCollection/go GC: prioritizing low latency and simplicity.md) 
[how does GC mark the memory](Memory/GarbageCollection/how does GC mark the memory.md) 
[how does GC watch your application](Memory/GarbageCollection/how does GC watch your application.md) 
[how does go stop the world](Memory/GarbageCollection/how does go stop the world.md) 
[keeping a variable alive](Memory/GarbageCollection/keeping a variable alive.md) 
[memory management and allocation](Memory/GarbageCollection/memory management and allocation.md) 
[memory management and memory sweep](Memory/GarbageCollection/memory management and memory sweep.md) 
[the garbage collection handbook](Memory/GarbageCollection/the garbage collection handbook.md) 
[the rules of unsafe.Pointer and uintptr](Memory/GarbageCollection/the rules of unsafe.Pointer and uintptr.md) 
[tracing garbage collection](Memory/GarbageCollection/tracing garbage collection.md) 
 
 
 
 
Goroutine 
[asynchronous preemption](Goroutine/asynchronous preemption.md) 
[concurrency & scheduler affinity](Goroutine/concurrency & scheduler affinity.md) 
[g0, special goroutines](Goroutine/g0, special goroutines.md) 
[goroutine and preemption](Goroutine/goroutine and preemption.md) 
[goroutine, os thread, and cpu management](Goroutine/goroutine, os thread, and cpu management.md) 
[gsignal, master of signals](Goroutine/gsignal, master of signals.md) 
[how does a goroutine start and exit](Goroutine/how does a goroutine start and exit.md) 
[how does go recycle goroutines](Goroutine/how does go recycle goroutines.md) 
[how goroutine stack size evolve](Goroutine/how goroutine stack size evolve.md) 
[improve the usage of your goroutines with GODEBUG](Goroutine/improve the usage of your goroutines with GODEBUG.md) 
[observing stack grow and shrink](Goroutine/observing stack grow and shrink.md) 
[what does a goroutine switch actually involve](Goroutine/what does a goroutine switch actually involve.md) 
[work-stealing in go scheduler](Goroutine/work-stealing in go scheduler.md) 
 
 
Runtime 
[a whirlwind tour of Go’s runtime environment variables](Runtime/a whirlwind tour of Go’s runtime environment variables.md) 
Scheduler 
[GOMAXPROCS & live updates](Runtime/Scheduler/GOMAXPROCS & live updates.md) 
[concurrency & scheduler affinity](Runtime/Scheduler/concurrency & scheduler affinity.md) 
[scheduling in go: part i - os scheduler](Runtime/Scheduler/scheduling in go: part i - os scheduler.md) 
[scheduling in go: part ii - go scheduler](Runtime/Scheduler/scheduling in go: part ii - go scheduler.md) 
[scheduling in go: part iii - concurrency](Runtime/Scheduler/scheduling in go: part iii - concurrency.md) 
[work-stealing in go scheduler](Runtime/Scheduler/work-stealing in go scheduler.md) 
 
 
Monitor 
[monitor pattern](Runtime/Monitor/monitor pattern.md) 
 
 
 
 
Synchronization 
Locks 
[how to reduce lock contention with the atomic package](Synchronization/Locks/how to reduce lock contention with the atomic package.md) 
[locks: sync.Mutex internals](Synchronization/Locks/locks: sync.Mutex internals.md) 
[mutex and starvation](Synchronization/Locks/mutex and starvation.md) 
 
 
RaceDetection 
[a race detector unfurled](Synchronization/RaceDetection/a race detector unfurled.md) 
[race detector with thread sanitizer](Synchronization/RaceDetection/race detector with thread sanitizer.md) 
 
 
 
 
Diagnostics 
[diagnostics methods](Diagnostics/diagnostics methods.md) 
Debugging 
[debugging with delve & coredumps](Diagnostics/Debugging/debugging with delve & coredumps.md) 
 
 
PProf 
[language semantics on memory profiling](Diagnostics/PProf/language semantics on memory profiling.md) 
[samples collection with pprof](Diagnostics/PProf/samples collection with pprof.md) 
 
 
Tracing 
[discovery of the trace package](Diagnostics/Tracing/discovery of the trace package.md) 
 
 
 
 
Testing 
[Benchmarking in Golang: Improving function performance](Testing/Benchmarking in Golang: Improving function performance.md) 
learn-go-with-tests  
[practical fuzzing with go](Testing/practical fuzzing with go.md) 
[unknown parts of the test package](Testing/unknown parts of the test package.md) 
 
 
Builtins 
map 
[concurrent access with maps - part 3](Builtins/map/concurrent access with maps - part 3.md) 
[map design by code - part 1](Builtins/map/map design by code - part 1.md) 
[map design by code - part 2](Builtins/map/map design by code - part 2.md) 
 
 
chan 
[buffered and unbuffered channels](Builtins/chan/buffered and unbuffered channels.md) 
[ordering in select statements](Builtins/chan/ordering in select statements.md) 
 
 
unsafe 
[what is the unsafe package](Builtins/unsafe/what is the unsafe package.md) 
 
 
context 
[context and cancellation by propagation](Builtins/context/context and cancellation by propagation.md) 
 
 
defer 
[defer internals](Builtins/defer/defer internals.md) 
[how does defer statement work](Builtins/defer/how does defer statement work.md) 
 
 
init 
[init functions](Builtins/init/init functions.md) 
 
 
interface 
[understand the empty interface](Builtins/interface/understand the empty interface.md) 
 
 
constants 
[learn go constants - a visual guide](Builtins/constants/learn go constants - a visual guide.md) 
 
 
closure 
[how does go implement closures](Builtins/closure/how does go implement closures.md) 
 
 
pointer 
[design philosophy on data and semantics](Builtins/pointer/design philosophy on data and semantics.md) 
[language mechanics on stacks and pointers](Builtins/pointer/language mechanics on stacks and pointers.md) 
[should i use pointer instead of a copy of struct](Builtins/pointer/should i use pointer instead of a copy of struct.md) 
 
 
pool 
[understand the design of sync.pool](Builtins/pool/understand the design of sync.pool.md) 
 
 
random 
[how are random numbers generated](Builtins/random/how are random numbers generated.md) 
 
 
string 
[string & conversion optimization](Builtins/string/string & conversion optimization.md) 
 
 
syscall 
[how does go runtime handles syscall](Builtins/syscall/how does go runtime handles syscall.md) 
 
 
timer 
[timers" life cycle](Builtins/timer/timers" life cycle.md) 
 
 
panic&recover 
[how does a program recover](Builtins/panic&recover/how does a program recover.md) 
 
 
 
 
Patterns 
[rethinking classical concurrency patterns](Patterns/rethinking classical concurrency patterns.md) 
 
 
Plugins 
[go plugin system](Plugins/go plugin system.md) 
 
 
Types 
[duck typing, structural typing, nominal typing](Types/duck typing, structural typing, nominal typing.md) 
[structural typing and norminal typing](Types/structural typing and norminal typing.md) 
 
 
Infrastructure 
[playing with go module proxy](Infrastructure/playing with go module proxy.md) 
[what is a goproxy](Infrastructure/what is a goproxy.md)