0

Defer trong Go

Defer trong go dùng để trì hoãn việc thực thi "function được gọi với từ khoá defer" cho đến trước khi function chứa câu lệnh defer kết thúc (return). Defer thường được dùng cho việc đóng file, mở khoá mutex, đóng channel, release vùng nhớ,...

func main() {
	defer fmt.Println("co defer")
	fmt.Println("khong defer")
}

Kết quả

khong defer
co defer

Program exited.

Function in dòng "co defer" được thực thi sau function in "khong defer".

Các tham số của function được gọi với defer được tính toán tại lúc câu lệnh defer được gọi, còn việc thực thi thực sự function đó sẽ bị delay. Nếu có nhiều function với từ khoá defer cùng được gọi trong cùng scope, thứ tự thực thi các function defer đó sẽ theo thứ tự LIFO.

for i := 0; i < 5; i++ {
    defer fmt.Printf("%d ", i)
}

Kết quả

4 3 2 1 0

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí