Using defer, panic, and recover
Modern programming languages have a need to provide some method of running routines when a section of code ends. This is useful when you need to guarantee a file closure or unlock a mutex. In addition, there are times when a program needs to stop execution and exit. This can be caused by loss of access to a critical resource, a security issue, or another need.
We also require the ability to recover from a premature program exit caused by a package that contains code we do not control. This section will cover each of the abilities in Go and their interrelations.
defer
The defer
keyword allows you to execute a function when the function that contains defer
exits. If there are multiple defer
statements, they execute last to first.
This can be useful for debugging, unlocking mutexes, decrementing counters, and so on. Here's an example:
func printStuff() (value string) { defer fmt.Println("exiting"...