defer문은 주변 함수가 반환될 때까지 함수의 실행을 연기시킵니다. 지연호출의 인수는 즉시 평가되지만 주변 함수가 반환 될 때까지 함수 호출이 실행되지 않습니다.


예시1

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


// 결과
hello
world

예시2

package main
import (
	_ "github.com/lib/pq"
	"database/sql"
)
func main() {
	// sql.DB 객체 db 생성
	db, err := sql.Open("mysql", "root:pwd@tcp(127.0.0.1:3306)/testdb")
 
	// db 차후에 닫기
	defer db.Close()
 
	// SELECT 쿼리
	rows, err := db.Query("SELECT id, name FROM test")
 
	// INSERT 실행
	db.Exec("INSERT INTO test(id, name) VALUES (1, 'Alex')")
}

// 결과
insert까지 실행된 다음 더이상 db를 사용하지 않으므로 defer 문을 호출해 db.Close()를 수행합니다.


'언어 > GO' 카테고리의 다른 글

[GO] Command line arguments 사용하기 (인자값 사용하기)  (1) 2016.12.01
[GO] Database/sql  (0) 2016.11.26
[GO] Defer  (0) 2016.11.25
[GO] fmt print  (0) 2016.11.11
[GO] 기본 디렉터리 설정  (0) 2016.10.26
[GO] GO언어란?  (1) 2016.10.26

+ Random Posts