Go備忘録 -defer-
Go備忘録 -defer-
- 呼び出し元関数が終了(return)するまで
defer
に与えた関数は評価されない。 defer
に与えた関数の引数などは、その時点の値で実行される。- 呼び出し元関数で
defer
を複数実行している場合は、あとで呼ばれたdefer
が先に評価される。
実行
package main import "fmt" func main() { i := 1 defer fmt.Println(i) i ++ defer fmt.Println(i) i ++ fmt.Println("func return") }
// 実行結果 func return 2 1