티스토리 뷰

Go

defer 키워드

LichKing 2019. 3. 1. 14:38

Go 언어에서 defer 키워드는 해당 키워드를 사용한 함수가 끝날때 호출되게된다.


func main() {
fmt.Println("a")
defer fmt.Println("b")
fmt.Println("c")
}


즉 이런 코드가 있으면 a, b, c 로 출력이 되는게 아니고 a, c가 출력되고 b는 main이 종료될때 출력되어 a, c, b가 출력되는것이다.


file IO 에서 자원을 닫는 구문처럼 항상 마지막에 수행해야하는 코드가 있다면 defer를 이용해서 최상단에서 호출할 수도 있는것이다.


file.open();

defer file.close();


처럼말이다.


defer가 2번 이상 사용됐다면 이때는 stack에 담기는것처럼 역순으로 실행되게된다.


func main() {
fmt.Println("a")
defer fmt.Println("b")
fmt.Println("c")
defer fmt.Println("e")
fmt.Println("f")
}


이 코드의 경우 a, c, f, b, e 로 출력되는게아니고 FILO으로 e가 b보다 먼저 출력되어 a, c, f, e, b 로 출력되게된다.


이제 golang에 대한 공부를 시작한 입장에서.. FILO로 실행된다는걸 유의해야할것같다.

'Go' 카테고리의 다른 글

goroutine  (0) 2019.03.28
command line argument 받기  (0) 2019.03.23
array와 slice  (0) 2019.03.02
panic() 과 recover()  (0) 2019.03.01
defer 키워드  (0) 2019.03.01
댓글
댓글쓰기 폼