package mainimport "fmt"func func1() {fmt.Println("A")}func func2() {fmt.Println("B")}func func3() {fmt.Println("C")}func main() {defer func1()defer func2()defer func3()}//输出://C//B//A
defer 和return的执行顺序
如果有多个defer表达式,调用顺序类似于栈,越后面的defer表达式越先被调用。
package mainimport "fmt"func deferFunc() int {fmt.Println("defer func called....")return 0}func returnFunc() int {fmt.Println("return func called....")return 0}func returnAndDefer() int {defer deferFunc()returnFunc()return 0}func main() {returnAndDefer()}//输出://return func called....//defer func called....
