I suspect it stops being so nice when you want to do something equivalent to go's `select` statement. Though that's purely speculation, and if I'm wrong it should definitely go in the examples!
Your skepticism made me look through the library more carefully. I came across some limitations in comparison to what Go provides:
1. As you suggest, there's no equivalent to the `select` mechanism. To perform the equivalent, you must busy loop and call `csp_chan_try_pop`.
2. It appears you cannot nest coroutines.
3. The mutex implementation does not provide an RWMutex.
4. `csp_yield` seems somewhat necessary for practical applications.
Normally I would not use another language as a basis for comparison to a C library, but that's precisely what the author of Libcsp appears to be aiming for.
All that said, there's a really slick implementation of a lock free RB queue backing this library, and It's a neat project. I think it would stand on its own better than as a "go style in C" library.
https://libcsp.com/