In the original code if out.Close() returns an error, run() will return nil. The revised code sets `err` to the returned error from out.Close(), in case the error from os.Create(*output) is nil.
Simply spoken, the original code will suppress the error from out.Close().
justinsb|11 years ago
I think this is tricky in any language.