KDOC 629: 遅延関数呼び出しはLIFOで実行される

この文書のステータス

  • 作成
    • 2026-09-21 貴島
  • レビュー
    • 2026-09-21 貴島

概要

遅延関数は、周囲の関数が戻り値を返した後に LIFO の順序で実行される。

Defer, Panic, and Recover - The Go Programming Language

import "fmt"

func main() {
    for i := 0; i < 4; i++ {
        defer fmt.Print(i)
    }
}
3210

defer 実行時でなく、 defer 文評価時 i が確定する。

                    ループでの実行順序   deferの実行順序
defer fmt.Print(0)        1                  4
defer fmt.Print(1)        2                  3
defer fmt.Print(2)        3                  2
defer fmt.Print(3)        4                  1

関連

なし。