What is the difference between Go's synchronous and asynchronous error handling for dealing with errors in Go programs?