IIFE (即時実行関数式)
匿名関数の即時実行
用途
deferと組み合わせて、リソース(ロック、ファイル、タイマーなど)の解放タイミングを制御するために使用されます。
- 後続のロジック(メール送信、ファイルアップロードなど)に影響を与えないように、
先行する作業のクリーンアップを強制的に前倒しします。
-
関数内の初期化ロジックでロックが必要な場合
deferを匿名関数内で宣言することで、匿名関数の実行(例:初期化ロジック)が終了したときに呼び出されます。- ロックの安全性保証:
deferを通じてロックが解放されることを保証します。
- ロックの安全性保証:
例1func() { 2 s.startedLock.Lock() 3 defer s.startedLock.Unlock() // この匿名関数が終了するとすぐにアンロックされる 4 // ... 5}() -
ループ内での
defer- ⚠️
deferの実行タイミングは関数が戻るときであるため、ループ内で直ちに実行されません。 - 匿名関数(IIFE)を作成し、その中でロジックとともに
deferを宣言します。
- ⚠️