golang:defer执行顺序

Posted live4m

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang:defer执行顺序相关的知识,希望对你有一定的参考价值。

defer类似栈,是逆序执行的,
当发生panic时,先执行完前面的所有defer,最后才panic.

示例代码:

package main

import "fmt"

func test(){
	defer func(){
		fmt.Println("defer 1")
	}()
	defer func(){
		fmt.Println("defer 2")
	}()
	defer func(){
		fmt.Println("defer 3")
	}()
	panic("temp")
}
func main(){
	test()
}

运行结果:

PS E:\\goproject> go run "e:\\goproject\\go_test1\\main.go"
defer 3
defer 2
defer 1
panic: temp

以上是关于golang:defer执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

Golang中defer的三个实战要点

一个有关Golang Deferred Function 执行顺序的问题

golang基础--细说defer

Golang的defer

Golang defer 快速上手

Golang defer 快速上手