新闻资讯

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻资讯列表

golang defer的执行顺序是什么,golang中defer

发布时间:2023-10-22 01:18:17

golang defer的履行顺序是甚么

在Go语言中,defer语句用于注册延迟调用,延迟调用会在函数履行终了后被履行,不管函数是正常返回或产生异常。

当有多个defer语句时,它们的履行顺序是逆序的,即最后注册的defer语句会最早履行,最早注册的defer语句会最后履行。

下面是一个示例:

package main

import "fmt"

func main() {
    defer fmt.Println("defer 1")
    defer fmt.Println("defer 2")
    defer fmt.Println("defer 3")

    fmt.Println("main")
}

输出结果为:

main
defer 3
defer 2
defer 1

可以看到,main函数中的代码首先履行,然后顺次履行了三个defer语句,依照逆序的顺序履行输出。