본문 바로가기
GO lang

defer

by NOMADFISH 2021. 1. 3.

DEFER

package main

import "fmt"

func main() {
	defer fmt.Println("world")
	fmt.Println("hello")
}

 

  • 함수 실행이 끝날때 까지 실행되지 않는 구문이다. 위의 예제를 보면 world를 프린트하는 기능이 앞에 있지만, 실제로 hello가 먼저 실행된다.
package main

import "fmt"

func main() {
	fmt.Println("counting")

	for i := 0; i < 10; i++ {
		defer fmt.Println(i)
	}

	fmt.Println("done")
}

 

  • 위와 같이 여러번 호출된 경우는 가장 나중에 사용된 defer구문부터 실행된다. 위 예제에서는 9,8,7,6... 이순서로 함수가 끝나는 순간에 프린트 된다.
  • 반드시 마지막에 실행되어야 하는 구문이 있는 경우, 앞에 미리 호출 해 넣고 그 사이에 넣어야할 로직들을 코딩하면 된다.
  • 이런방식으로 코드를 작성하면 , 파일을 안닫거나, 리소스를 해제하는 일등을 중간 로직을 넣다가 까먹고 안하는 경우를 피할 수 있다.

'GO lang' 카테고리의 다른 글

http server 기본1  (0) 2021.01.20
Switch 2  (0) 2020.12.26
Switch  (0) 2020.12.23
조건문 if  (0) 2020.12.18
반복문  (0) 2020.12.14