Goの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関数のコードは、最初に実行され、その後3つのdeferステートメントが順番に実行され、逆に実行され出力が表示されます。

bannerAds