defer 는 매우 강력한 기능이다. func 가 끝나고나면 자동으로 무엇을 실행할지 함수안에 적어둘수가 있다. 그게 뭐가 강력하냐고 물을수도 있겠지만 시스템 구조상으로 엄청나게 도움을 줄 수 있다. 이미지를 열거나 파일을 생성하고 나서 defer 로 이미지를 닫거나 파일을 닫거나 API 로 요청을 보내거나 하는 일들을 그냥 defer 하나로 처리할 수 있게 되는것이다. 아래처럼 쓸 수 있다. func lenAndUpper(name string) (int, string) { defer fmt.Println("done") return len(name), strings.ToUpper(name) } func main() { totalLenght, upperName := lenAndUpper("choi") fm..