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()
}