[Go] defer문

defer는 기존 언어들의 finally구문과 유사한 기능이다.

defer로 표시된 문장은 현재 스코프를 탈출할 경우 [무조건] 수행된다.

다만 defer 구문 자체는 함수가 반환되기 전에 놔야한다. defer 구문이 나오면 그걸 스택에 넣고 대기타는 형식이기 때문이다. image

image 먼저 써놨던 defer 구문이 가장 마지막에 수행되는걸 볼 수 있다.

아 그리고 defer 구문이 여러개 있다면 순서는 역순으로 호출된다. 스택으로 처리하는거라 image