(Go : basic) 13. defer

Posted by : at

Category : Go


package main

import "fmt"

func ex_f1() {
	fmt.Println("f1 : start")
	defer ex_f2() //마지막에 호출
	fmt.Println("f1 : end")
}

func ex_f2() {
	fmt.Println("f2 : called")
}

func main() {
	//Defer 함수 실행(지연)
	//Defer를 호출한 함수가 종료되기 직전에 호출 된다.
	//타 언어의 Finally 문과 비슷
	//주로 리소스 반환 등에 사용

	//예제1
	ex_f1()
}
$ f1 : start
$ f1 : end
$ f2 : called
package main

import "fmt"

func sayHello(msg string) {
	defer func() {
		fmt.Println(msg)
	}()

	func() {
		fmt.Println("Hi ")
	}()
}

func main() {

	//예제1
	sayHello("Golang!")
}
$ Hi
$ Golang
package main

import "fmt"

func stack() {
	for i := 1; i <= 10; i++ {
		defer fmt.Println("ex1 : ", i)
	}
}

func main() {

	//예제1
	stack()
}
$ ex1 : 10
$ ex1 : 9
$ ex1 : 8
$ ex1 : 7
$ ex1 : 6
$ ex1 : 5
$ ex1 : 4
$ ex1 : 3
$ ex1 : 2
$ ex1 : 1
package main

import "fmt"

func start(t string) string {
	fmt.Println("start:", t)
	return t
}
func end(t string) {
	fmt.Println("end:", t)
}

func a() {
	defer end(start("b"))
	fmt.Println("in a")
}

func main() {

	//예제1
	a()
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links