Why take this course
If you want to build efficient, reliable, and scalable applications, this training will equip you with the practical skills needed to effectively use the Go language. With it, you’ll be able to proficiently handle the language’s complex mechanisms, test your code, and implement effective services, accelerating the development of your projects.
What you'll learn
- Create correct code in Golang using advanced features. This includes creating your own robust data types, implementing concurrency mechanisms, and handling errors and time-based events effectively.
- Test your code using the complete set of tools offered by Go. You’ll master unit testing, benchmarking, and fuzzing to ensure your applications are reliable and performant.
- Implement efficient RESTful services and analyze their performance.
- To practically use relational databases.
Certification & Exam
Upon completion of the training, you will receive a certificate of participation, confirming your skills in using the Go language. There is no final exam—all you need is active participation in the classes.
Who is this course for
This course is intended for intermediate to senior-level programmers who have experience in other programming languages and are familiar with the basic syntax of Go.
Topics covered
Basic Concepts
- Code architecture
- Structures, interfaces and methods,
- Embedding and method promotion
- Concurrency
- Goroutine lifecycle control and data propagation: contexts and wait groups
- Shared data synchronization: Mutex, RWMutex
- Inter-process communication: channels and select
- Time based events: timers and tickers
- Error handling
- Custom error hierarchies,
- Checking error type,
- Unexpected errors: panic and recover
- Structural logging using slog
- Embedded resources
- Application configuration using koanf package
Testing
- Table and map driven tests
- Concurrent test execution,
- Data assertions: deep equal and golden files
- Test Doubles
- Mocks vs Stubs vs Fakes
- Higher-order function replacement
- Monkey patching
- HTTP testing
- Request emulation
- Client tests
- Benchmarking
- Fuzz testing
Databases
- Object-relational mappings: gorm or ent package
- Model/query code generation from SQL: sqlc package
- Schema and migration management: atlas package
RESTful Services
- Handling HTTP Requests
- Routing: paths and handlers
- Request parameter extraction
- Serving files and embedded resources,
- Request contexts and middlewares
- Security
- TLS Server
- JSON Web Token Access Control
- OpenAPI code generation
- Serving Swagger UI
Tools
- Project building support: mage
- Static code analysis using golangci-lint
- Profiling