1. 是相对于一个函数而非一个代码块
func main() {
{
defer func() {
fmt.Println("p1")
}()
fmt.Println("p2")
}
fmt.Println("p3")
}
输出结果
p2
p3
p1
2. 是对同一个函数而非外部函数
func test1(){}
defer func() {
fmt.Println("test1")
}()
}
func test2(){}
defer func() {
fmt.Println("test2")
}()
}
func main() {
defer func() {
fmt.Println("test")
}()
test1()
test2()
}
结果输出如下
test1
test2
test