I like the style of Sean's program.
Let me fix one subtle problem though. Printing through the fmt package is not typically thread safe at the operating system level. If the runtime actually puts your separate goroutines on separate OS threads, you risk garbled output--probably only very rarely, but it's still a bug.
A solution is to serialize access to os.Stdout, and the log package can do that. Here (
playground) is one way. By assigning the the package name "fmt" to the log package, I kind of put up a road block warning against use of the real fmt package. Feel free to take down the road block, but be aware that adding other unserialized output to os.Stdout can ruin this attempt to keep output serialized. At some point as your program grows, you probably won't want to leave your serialized calls writing to os.Stdout, much less qualified with "fmt."