Contents
1: I/O and File Systems
b'Chapter 1: I/O and File Systems'
b'Introduction'
b'Using the common I/O interfaces'
b'Using the bytes and strings packages'
b'Working with directories and files'
b'Working with the CSV format'
b'Working with temporary files'
b'Working with text/template and HTML/templates'
2: Command-Line Tools
b'Chapter 2: Command-Line Tools'
b'Introduction'
b'Using command-line\xc3\x82\xc2\xa0flags'
b'Using command-line\xc3\x82\xc2\xa0arguments'
b'Reading and setting environment variables'
b'Configuration using TOML, YAML, and JSON'
b'Working with Unix pipes'
b'Catching and handling signals'
b'An ANSI coloring application'
3: Data Conversion and Composition
b'Chapter 3: Data Conversion and Composition'
b'Introduction'
b'Converting data types and interface casting'
b'Working with numeric data types using math and math/big'
b'Currency conversions and float64 considerations'
b'Using pointers and SQL NullTypes for encoding and decoding'
b'Encoding and decoding Go data'
b'Struct tags and basic reflection in Go'
b'Implementing collections via closures'
4: Error Handling in Go
b'Chapter 4: Error Handling in Go'
b'Introduction'
b'Handling errors and the Error interface'
b'Using the pkg/errors package and wrapping errors'
b'Using\xc3\x82\xc2\xa0the log package and understanding when
to log errors'
b'Structured logging with the apex and logrus packages'
b'Logging with the context package'
b'Using package-level global variables'
b'Catching panics for long running processes'
5: All about Databases and Storage
b'Chapter 5: All about Databases and Storage'
b'Introduction'
b'The database/sql package with MySQL'
b'Executing a database transaction interface'
b'Connection pooling, rate limiting, and timeouts
for\xc3\x82\xc2\xa0SQL'
b'Working with Redis'
b'Using NoSQL with MongoDB and mgo'
b'Creating storage interfaces for data portability'
6: Web Clients and APIs
b'Chapter 6: Web Clients and APIs'
b'Introduction'
b'Initializing, storing, and passing http.Client structs'
b'Writing a client for a REST API'
b'Executing parallel and async client requests'
b'Making use of OAuth2 clients'
b'Implementing\xc3\x82\xc2\xa0an OAuth2 token storage interface'
b'Wrapping a client in added functionality and function
composition'
b'Understanding GRPC clients'
7: Microservices for Applications in Go
b'Chapter 7: Microservices for Applications in Go'
b'Introduction'
b'Working with web handlers, requests, and ResponseWriters'
b'Using structs and closures for stateful handlers'
b'Validating input for Go structs and user inputs'
b'Rendering and content negotiation'
b'Implementing and using middleware'
b'Building a reverse proxy application'
b'Exporting GRPC as\xc3\x82\xc2\xa0a JSON API'
8: Testing
b'Chapter 8: Testing'
b'Introduction'
b'Mocking using the standard library'
b'Using the Mockgen package'
b'Using table-driven tests to improve coverage'
b'Using third-party testing tools'
b'Practical fuzzing'
b'Behavior testing using Go'
9: Parallelism and Concurrency
b'Chapter 9: Parallelism and Concurrency'
b'Introduction'
b'Using channels and the select\xc3\x82\xc2\xa0statement'
b'Performing async operations
with\xc3\x82\xc2\xa0sync.WaitGroup'
b'Using atomic operations and mutex'
b'Using the context package'
b'Executing state management for channels'
b'Using the worker pool design pattern'
b'Using workers to create pipelines\xc3\x82\xc2\xa0'
10: Distributed Systems
b'Chapter 10: Distributed Systems'
b'Introduction'
b'Using service discovery with Consul'
b'Implementing basic consensus using Raft'
b'Using containerization with Docker'
b'Orchestration and deployment strategies'
b'Monitoring applications'
b'Collecting metrics'
11: Reactive Programming and Data Streams
b'Chapter 11: Reactive Programming and Data Streams'
b'Introduction'
b'Goflow for dataflow programming'
b'Reactive programming with\xc3\x82\xc2\xa0RxGo'
b'Using Kafka with Sarama'
b'Using async producers with Kafka'
b'Connecting Kafka to Goflow'
b'Writing a GraphQL server in Go'
12: Serverless Programming
b'Chapter 12: Serverless Programming'
b'Introduction'
b'Go programming on Lambda with Apex'
b'Apex serverless logging and metrics'
b'Google App Engine with Go'
b'Working with Firebase using zabawaba99/firego'
13: Performance Improvements, Tips, and Tricks
b'Chapter 13: Performance Improvements, Tips, and Tricks'
b'Introduction'
b'Speeding up compilation and testing cycles'
b'Using the pprof tool'
b'Benchmarking and finding bottlenecks'
b'Memory allocation and heap management'
b'Vendoring and project layout'
b'Using fasthttprouter\xc3\x82\xc2\xa0and fasthttp'