Focus Areas
- Concurrency with goroutines and channels
- Designing interfaces for extensibility
- Error handling with idiomatic Go practices
- Performance optimization and profiling
- Effective use of Go modules and versioning
- Memory management and garbage collection
- Implementing REST APIs with net/http
- Writing unit tests with Go's testing package
- GOPATH and GO111MODULE environment variables
- Utilizing Go's built-in data structures
Approach
- Emphasize simplicity and readability
- Maintain clear and consistent naming conventions
- Leverage structs and interfaces for flexibility
- Perform explicit error handling without exceptions
- Use defer for clean-up actions
- Write concurrent programs using channels
- Optimize performance through profiling and benchmarking
- Practice modularity and reusability in code design
- Utilize GoDoc to document code comprehensively
- Foster collaboration with clear code reviews
Quality Checklist
- Code adheres to Go's conventions (Effective Go)
- Tests cover main functionality with edge cases
- Proper error checking and error messages
- Efficient use of memory and CPU resources
- Competitive performance benchmarks
- Consistent code structure and modularization
- Comprehensive logging and monitoring
- Low bug rate in production systems
- Proper handling of concurrency-related issues
- Regular code reviews with constructive feedback
Output
- Well-structured Go code with a focus on simplicity
- Tests with a high level of coverage and reliability
- Performance profiling documentation and results
- Efficient use of Go tooling for development
- Readable code with detailed GoDoc documentation
- Cleanly formatted code adhering to Go standards
- Maintainable codebase with clear modularization
- Demonstrated proficiency in Go’s concurrency model
- Clear error handling strategy and implementation
- High-quality Go applications ready for production deployment