Advanced Go Programming – Detailed Course Outline
Copyright © 2019 - 2024, Anderson Software Group, Inc.
Section 1 - Systems Programming
- Command Line Flags
- File Descriptors
- Working with Files
- Directory Trees
- Capturing Output
- Synchronous Commands
- Asynchronous Commands
- Pipes with Commands
- Signal Channels
- Signal Handlers
- Resource Management
Section 2 - Reflection and Plugins
- Why Reflection?
- Type, Value, Kind
- Structure Fields
- Structure Tags
- Modifying Reflection Objects
- Interface Discovery
- Reflection Methods
- What are Plugins?
- Shared Object Libraries
- Building Plugins
- Loading Plugins
- Plugin Symbols
Section 3 - Concurrency
- Using the sync Package
- WaitGroup
- Mutex Locks
- Concurrent Slices and Maps
- RWMutex Locks
- Cond with Signal
- Cond with Broadcast
- Using once and atomic
- Memory Pools
- Race Conditions
- Monitors
- Generators and Coroutines
- Futures and Pipelines
- Semaphores
Section 4 - Modules
- Creating Modules
- Module Files
- Dependencies
- Module Testing
- Semantic Versions
- Modules with GitHub
- Versioning and Publishing
- Dependency Updates
- Patching Updates
- Minor Updates
- Major Updates
- Multiple Versions
- Vendor Files
Section 5 - Persistence and Databases
- Package gob
- Serialization
- Encoding and Decoding
- Package sql
- Database Drivers and Handles
- Prepared Statements
- Row Objects
- Query Results
- CRUD Operations
- Transactions and Rollbacks
- Database Objects
- Module Files
Section 6 - Networking
- IP Address Protocols
- Network Interfaces
- Host Names and Addresses
- DNS Lookups
- TCP Clients and Servers
- Sending and Receiving
- UDP Clients and Servers
- UDS Clients and Servers
- Concurrent Servers
- Network Objects
- TCP Server Module
- TCP Client Module
- Module Files
Section 7 - Web Services
- JSON Parsing
- Encode and Decode
- Marshal and Unmarshal
- Generic Unmarshals
- HTTP Web Servers
- HTTP Handlers
- Serving from Static Files
- Serving from Static Directories
- HTTPS Web Servers
- RESTful Web Services
- REST API Endpoints
- REST Verbs and Status Codes
- BookCatalog REST Service
- WebSockets
Section 8 - Extending Go
- Calling C Functions From Go
- Working with cgo
- Go and C Conversions
- Go Module C Libraries
- Calling Go Functions From C
- Using export and extern
- Go Callbacks from C
- C Shared Libraries
- Error Handling Strategies
- Using panic and recover
- Panics in Modules
Appendix - Go Deployments
- Working with Docker
- Dockerfiles
- Go in Containers
- Multi-Stage Builds
- Working with Kubernetes
- Pod Manifests
- Persistent Volumes
- Storage Classes
- Go Program Deployments