table-of-contents-eng
Table of Contents 1
Introduction 5
Language Mechanics 6
Syntax 6
Variable 6Built-in types 6
Zero value concept 6
Declare and initialize 7
Conversion vs casting 8
Struct 8Declare and initialize 8
Name type vs anonymous type 10
Pointer 11Everything is about pass by value 11
Pass by value 11
Escape analysis 12
Function 15
Constant 17Declare and initialize 17
iota 19
Data Structures 20
Array 20CPU Cache 20
Translation Lookaside Buffer 21
Declare and initialize 21
What is the cost? 22
Iterate over the array of strings 23
Different type arrays 24
Contiguous memory allocations 24
Slice 25Declare and initialize 25
Length vs Capacity 25
Reference type 26
Idea of appending: making slice a dynamic data structure 27
Slice of slice 30
Copy a slice 31
Slice and reference 32
UTF-8 33
Map 34Declare and initialize 35
Map literals 35
Delete key 36
Find key 36
Map key restrictions 36
Decoupling 37
Method 37Value and Pointer Receiver Call 37
Value and Pointer Semantics 39
Methods are just functions 43
Interface 46Valueless type 46
Interface via pointer receiver 50
Slice of interface 53
Embedding 55Declaring fields, NOT Embedding 55
Embedding types 56
Embedded type and Interface 57
Outer and inner type implementing the same interface 58
Exporting 60Guideline 60
Exported identifier 60
Accessing a value of an unexported identifier 61
Unexported fields from an exported struct 62
Exported types with embedded unexported types 63
Software Design 65
Composition 65
Grouping types 65Grouping By State 65
Grouping By Behavior 67
Decoupling 70Struct Composition 70
Decoupling With Interface 74
Interface Composition 79
Decoupling With Interface Composition 84
Conversion 89Interface Conversions 89
Type assertion 91
Runtime Type Assertion 92
Interface Pollution 94Remove Interface Pollution 96
Mocking 98Package To Mock 98
Client 100
Error Handling 101
Default error values 101
Error variables 103
Type as context 105
Behavior as context 107
Finding the bug 110
Wrapping Errors 111
Concurrency 114
Mechanics 114
Goroutine 114
Language Mechanics 121Sequence 123
Goroutine time slicing 124
Goroutines and parallelism 126
Data race 128Race Detection 128
Atomic Functions 131
Mutexes 133
Read/Write Mutex 135
Channel 139Language Mechanics 139
Unbuffered channel: Signaling with data 141
Unbuffered channel: Double signal 143
Unbuffered channel: select and receive 144
Unbuffered channel: select and send 145
Buffered channel: Select and drop 146
Unbuffered channel (Tennis match) 148
Unbuffered channel (Replay race) 150
Buffered channel: Fan Out 153
Select 157
Patterns 164
Context 164Store and retrieve values from a context 164
WithCancel 166
WithDeadline 168
WithTimeout 169
Request/Response 171
Testing and Profiling 173
Testing 173
Basic Unit Test 173Table Test 176
Sub Test 177
Web Server 181
Mock Server 187
Benchmarking 191
Basic Benchmark 191
Sub Benchmark 192
Profiling 193
Stack Trace 193Review Stack Trace 193
Packing 195
GODEBUG 196Memory Tracing 196
Keep in touch 199
Last updated