IIFE (Immediately Invoked Function Expression)
익명 함수 즉시 실행
Usage
defer와 함께 리소스(Lock, 파일, 타이머 등)의 해제 시점을 제어하기 위해서 사용
- 뒤이어 실행될 로직(이메일 전송, 파일 업로드 등)에 영향을 주지 않기 위해,
앞선 작업의 정리(Clean-up)를 강제로 앞당김
-
함수 내 초기화 로직에서 Lock 이 필요할 때
defer를 익명 함수 내에서 선언함으로써 익명 함수 실행(e.g. 초기화 로직)이 끝날 때 호출- 락 안정성 보장:
defer를 통해 Lock 이 해제됨을 보장
- 락 안정성 보장:
e.g.1func() { 2 s.startedLock.Lock() 3 defer s.startedLock.Unlock() // 이 익명 함수가 끝나면 바로 언락됨 4 // ... 5}() -
반복문 안에서의
defer- ⚠️
defer의 실행 시점은 함수가 반환될 때이기 때문에 반복문 내에서 바로 실행되지 않음 - 익명 함수(IIFE)를 만들고 이 안에서 로직과 함께
defer선언
- ⚠️