This is a created article in which the information may have evolved or changed.
In the go language, the defer statement is called at the end of the function, even if the subsequent statement runs with an exception defer statement will still be executed.
It is important to note that if a parameter is referenced in the defer statement, the value of the parameter will be the value of the program to the defer line, which is not related to the subsequent statement.
The following is a simple test:
Package Mainimport "FMT" Func Main () {func_b_0 () func_b_1 () func_b_2 ()}func func_b_0 () {fmt. Println ("Func_b_0...top") A: = 5defer fmt. Println ("A=", a) A++}func func_b_1 () {fmt. Println ("Func_b_1...top") A: = 5defer func () {fmt. Println ("A=", a)} () A++}func func_b_2 () {fmt. Println ("Func_b_2...top") A: = 5defer func (a int) {FMT. Println ("A=", a)} (a) a++}
Output:
Func_b_0...topa= 5func_b_1...topa= 6func_b_2...topa= 5