Generally speaking, you ought to use error instead of panic. The only time panic is appropriate is when the program really ought to just crash.
For example, I'm writing a small program to update a database. If the DB connection can't be opened, the program can't do anything useful, so it can just exit with an error.
Any library should just use error.
Why isn't lack of DB connection a panic condition?
Why isn't lack of DB connection a panic condition?
It is a panic condition... I could have chosen my words better. That's what I meant by the program exiting.
http://golang.org/doc/effective_go.html#panic