It sort of does via channels, though. Sending a value to a bufferless channel causes the next goroutine to run (eventually). This looks a bit like a goto if you squint.
Go needs multiple stacks and a way to switch to executing a different stack. Web assembly could provide this in a high-level way.