Golang: Concurrency Patterns and Use Cases