People seem fascinated by the concurrency features of the Go programming language. In Go, concurrent processes communicate by channels that are typed pipes through which you can send and receive values to share memory by communicating. Writing code using channels imposes structure, and you are in a way forced to write smaller functions that do one thing at a time, which in my opinion, is a good thing. In this talk, we cover how Go channels work, their benefits, and why are so popular. Next, we will compare an equivalent version in .NET Core based on CSP (Communicating Sequential Processes), and ultimately, we will deep dive into the new .NET Task.Channels and IO.Pipelines types, which are designed to achieve high performance with simple semantics. You will walk away with knowledge to apply the Go concurrent programming model in .NET with higher performance.