- vừa được xem lúc

Defer trong Go

0 0 2

Người đăng: Xuân Nguyễn

Theo Viblo Asia

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

Bình luận

Bài viết tương tự

- vừa được xem lúc

Embedded Template in Go

Getting Start. Part of developing a web application usually revolves around working with HTML as user interface.

0 0 72

- vừa được xem lúc

Tại sao bạn nên học Go ?

. Trong những năm gần đây, có một sự trỗi dậy của một ngôn ngữ lập trình mới Go hay Golang. Không có gì làm cho các developer chúng ta phát cuồng hơn một ngôn ngữ mới, phải không ?.

0 0 53

- vừa được xem lúc

Implement Multi-Connections Download in Go - Part II

Getting Start. In Part I we've looked at how to implement core download functionality as well as define a public API for client to use our package.

0 0 39

- vừa được xem lúc

Sự khó chịu khi mới học Golang và cách giải quyết siêu đơn giản

Gần đây mình đang tìm một giải pháp backend thay thế cho Java Spring (do nó nặng vãi chưởng), sẵn tiện học luôn ngôn ngữ mới. Bỏ ra một ngày để tìm hiểu, khảo sát vài ngôn ngữ backend, cuối cùng mình

0 0 74

- vừa được xem lúc

Serverless Series (Golang) - Bài 9 - Codepipeline Notification with AWS Chatbot and AWS SNS

Giới thiệu. Chào các bạn tới với series về Serverless, ở bài trước chúng ta đã tìm hiểu về cách dựng CI/CD với Codepipeline.

0 0 43

- vừa được xem lúc

Golang và Goroutines

Giới thiệu. Dạo gần đây mình có tìm hiểu về Go hay còn được gọi là Golang thì mình thấy Go có đặc điểm nổi bật là có tốc độ xử lý nhanh và hỗ trợ xử lý đa luồng (concurrency) rất tốt với Goroutines.

0 0 68