In Go, defer, panic, and recover are three functions that can be used for error handling and control flow in a program.
**defer** is a keyword in Go that is used to schedule a function call to be executed immediately before the function that contains the
**defer** statement returns. The deferred function calls are executed in last-in-first-out (LIFO) order, meaning that the most recently deferred function is executed first. The main purpose of using
**defer** is to ensure that certain cleanup tasks are executed even if an error occurs during the execution of a function.
**panic** is a built-in function in Go that is used to cause a run-time error that can be recovered by a
**recover** function call. When a panic occurs, the program terminates immediately and starts unwinding the stack, executing deferred functions as it goes until it finds a
**recover** call that can handle the panic. If there is no
**recover** call, the program exits with a non-zero status.
**recover** is a built-in function in Go that is used to recover from a panic. It must be called inside a deferred function to be effective. When a panic occurs, the program starts unwinding the stack and executing deferred functions until it finds a
**recover** call. If the
**recover** function is called in the deferred function, the program continues execution as if nothing happened, and the value passed to the
**panic** function is returned by
**defer** is used for scheduling cleanup tasks,
**panic** is used for generating run-time errors, and
**recover** is used for recovering from a panic and resuming normal execution.