Explain the use of Go's panic and recover functions for handling run-time errors and panics in Go programs?