Advanced Go Programming – Detailed Course Outline

Copyright ©  2019 - 2020, 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 - Microservices and Containers
  • Monolithic vs. Microservice
  • Containers vs. Virtual Machines
  • Working with Docker
  • Dockerfiles
  • Multi-Stage Builds with Go
  • Working with Kubernetes
  • Pod Manifests
  • Persistent Volumes
  • Storage Classes
  • Go Program Deployments
Appendix
  • Error Handling Strategies
  • Designing with panic and recover
  • Working with cgo
  • Calling C Functions from Go
  • Calling Go Functions from C