go언어의 함수 사용법을 보면 C언어와 유사해도 색다른 점이 많습니다.

C언어도 매우 간결하지만, go언어는 한술 더 뜬다고 할까요?

예를 들어 함수 이름 없이도 정의할 수 있습니다. 아래 처럼 말이죠.


package main


import "fmt"


func main(){


fmt.Println( func( x, y int)(int, int){

return y, x

}(  1, 2) )

}


함수 이름이 없으니 함수를 정의해 놓고 바로 인수를 전달했습니다.


이와 같은 함수 호출 특징을 defer에서 응용할 수 있습니다.

defer은 함수 실행을 예약하는 것으로 아래와 같이 코드를 구성하면

main() 함수가 종료할 때 자동으로 실행해야 하는 일을 수행할 수 있습니다.


package main


import "fmt"


func main(){


defer func(){

fmt.Println( "함수 종료 시 반드시 처리")

} ()

fmt.Println( "함수 시작");

}


main() 함수가 종료될 때 실행할 내용을 함수로 담았지만, 굳이 함수 이름을 생각할 필요가 없죠.

함수가 종료될 때 응용해 보세요.