パターン) IIFE

IIFE (即時実行関数式)

匿名関数の即時実行

用途

deferと組み合わせて、リソース(ロック、ファイル、タイマーなど)の解放タイミングを制御するために使用されます。

  • 後続のロジック(メール送信、ファイルアップロードなど)に影響を与えないように、
    先行する作業のクリーンアップを強制的に前倒しします。
  • 関数内の初期化ロジックでロックが必要な場合

    • deferを匿名関数内で宣言することで、匿名関数の実行(例:初期化ロジック)が終了したときに呼び出されます。
      • ロックの安全性保証: deferを通じてロックが解放されることを保証します。
    1func() {
    2	s.startedLock.Lock()
    3	defer s.startedLock.Unlock() // この匿名関数が終了するとすぐにアンロックされる
    4	// ...
    5}()
    
  • ループ内でのdefer

    • ⚠️ deferの実行タイミングは関数が戻るときであるため、ループ内で直ちに実行されません。
    • 匿名関数(IIFE)を作成し、その中でロジックとともにdeferを宣言します。

Post
Category
Series