Go is direct successor of a long line of alternative C evolution (Bell Labs didn't stop evolving the language or experimenting with new ones, and Go pretty much initially was a syhtax sugar for Plan9 C and its runtime and style)
Then it's a case of convergent evolution then, because coroutines were even a part of Modula-2, and the type of class / interface approach that Go sports looks very much like Oberon's.
I won't wonder if the ideas were circulating between Oberon and Plan 9 communities back in the day.
Griesemer, one of the three original Golang developers, did his dissertation on extending Oberon to, I think, massively parallel computers. Golang has a bunch of constructs that weren't in Plan 9 C; some of the syntactic sugar comes arguably from Oberon, but most of the semantics come from Newsqueak and Alef.
IIRC after Alef went "bust" due to disagreements about GC, its thread semantics got ported to C as libthread, as well as used in Limbo. Then Go kinda resurrected it but with GC?
I won't wonder if the ideas were circulating between Oberon and Plan 9 communities back in the day.