Golang Study Project
- Packages and the Go Tool
- The Go Tool ✔️
- Packages and Naming ✔️
- The Package Declaration ✔️
- Import Declarations ✔️
- Blank Imports ✔️
- Import Paths ✔️
- Program Structure
- Names ✔️
- Declarations ✔️
- Constants ✔️
- Variables ✔️
- Assignments ✔️
- Type Declarations ✔️
- Scope ✔️
- Basic Data Types
- Integers
- Floating-Point Numbers
- Complex Numbers
- Booleans
- Strings
- Rune
- Composite Types
- Arrays
- Slices
- Maps
- Structs
- Pointers
- JSON
- Text and HTML Templates
- Functions
- Function Declarations
- Recursion
- Multiple Return Values
- Errors
- Function Values
- Anonymous Functions
- Variadic Functions
- Deferred Function Calls
- Panic
- Recover
- Methods
- Method Declarations
- Methods with a Pointer Receiver
- Composing Types by Struct Embedding
- Method Values and Expressions
- Encapsulation
- Testing
- The go test Tool
- Test Functions
- Coverage
- Benchmark Functions
- Profiling
- Interfaces
- Interfaces as Contracts
- Interface Types
- Interface Satisfaction
- Interface Values
- The error Interface
- Type Assertions
- Discriminating Errors with Type Assertions
- Querying Behaviors with Interface Type Assertions
- Type Switches
- Goroutines and Channels
- Goroutines
- Channels
- Looping in Parallel
- Multiplexing with select
- Cancellation
- Concurrency with Shared Variables
- Race Conditions
- Mutual Exclusion: sync.Mutex
- Read/Write Mutexes: sync.RWMutex
- Memory Synchronization
- Lazy Initialization: sync.Once
- The Race Detector
- Goroutines and Threads
- Reflection
- The Core Packages
- Strings
- Input / Output
- Files & Folders
- Errors
- Containers & Sort
- Hashes & Cryptography
- Servers
- Parsing Command Line Arguments
- Synchronization Primitives