지연(Defer)은 함수 호출이 나중에 프로그램의 실행에서 수행되도록 보장 하기위해 사용됩니다. 일반적으로는 코드 정리를 위한 목적으로 사용합니다. |
|
package main
|
|
import "fmt"
import "os"
|
|
파일을 만들고, 값을 쓴 다음 다 끝나면 파일을 종료시키고 싶다고 해보자. 다음은 |
func main() {
|
|
f := createFile("/tmp/defer.txt")
defer closeFile(f)
writeFile(f)
}
|
func createFile(p string) *os.File {
fmt.Println("creating")
f, err := os.Create(p)
if err != nil {
panic(err)
}
return f
}
|
|
func writeFile(f *os.File) {
fmt.Println("writing")
fmt.Fprintln(f, "data")
|
|
}
|
|
func closeFile(f *os.File) {
fmt.Println("closing")
f.Close()
}
|
프로그램을 실행하면 파일이 다 쓰여진 다음 종료되는걸 확인할 수 있습니다. |
$ go run defer.go
creating
writing
closing
|
다음 예제: 컬렉션 함수.