On Gotcha that I had to learn early on is that the application exits when main finishes. Even when there are concurrent goroutines doing work you intend. To avoid that there are ways to make sure main waits for the other work to finish before exiting.
Because of the way Go handles concurrency that can run on multiple threads this seemed like a fairly unique one to Go. We do cover waiting in Go in Practice.