I can be wrong, but as far as I know, Go language's specification also does not define how goroutines are to be implemented.
Google's implementation makes use of greenlets, while gccgo is using OS threads. Further implementations might decide on others approaches.
As for channels/rendezvous you might be correct, as I only played a bit with Ada.