It's not exactly the same, no, but C# also uses state machines to build the async versions of methods on compilation.
See http://msdn.microsoft.com/en-us/magazine/hh456403.aspx for a great article by Mads Torgersen about how methods are rewritten in the compiler for C#'s async token.
In golang, goroutines are much more similar to the .Net TPL than the async token, conceptually. A goroutine is swapped out for another on a thread if it becomes blocking, so you're working with more of a thread pool construct. Go handles the non-blocking I/O for you under the hood.