Go provides concurrency primitives (scheduler yielding i/o, channels, goroutines, etc) upon which you can build your own "events". I agree (and this seems to be your point) that Go doesn't provide a canned event mechanism that you can just hook into for callbacks on IO.
For example in the Go http server[1] a goroutine accepts in a loop and kicks off goroutines to process and handle new requests.
[1]: http://golang.org/src/pkg/net/http/server.go?s=30200:30241#L...