Explore classical concurrency patterns and their Go alternatives in this GopherCon 2018 talk. Delve into lightweight goroutines and concurrency primitives, examining how they change cost/benefit tradeoffs. Learn to start goroutines for concurrent work, share by communicating, and implement asynchronous APIs. Discover techniques to avoid blocking UI and network threads, reduce idle threads, and reclaim stack frames. Understand how to make concurrency an internal detail and address challenges with condition variables. Gain insights on sharing resources, data, and completion through communication. Examine worker lifetimes and idle workers, and recap key concepts for effective concurrent programming in Go.