کلمه کلیدی Defer یه کلمه کلیدی تو Go هست که باعث میشه یه تابع بعد از اتمام تابع فعلی اجرا بشه. این یعنی وقتی return زدی یا اروری اومد، اون تابع deferred آخر کار اجرا میشه.
✨ چرا از defer استفاده کنیم؟
کلمه کلیدی defer خیلی به درد کارایی مثل اینا میخوره:
✅ بستن فایلها (file.Close())
✅ بستن کانکشنها یا منابع شبکه
✅ آزاد کردن lockها (مثل mutex.Unlock())
✅ گرفتن log یا اندازهگیری زمان اجرا
مثلاً:
func readFile() {
f, _ := os.Open("data.txt")
defer f.Close()
// ادامهی کار با فایل...
}🧠 چطوری کار میکنه؟
اگه چند تا defer پشتسرهم بنویسی، به صورت LIFO اجرا میشن؛ یعنی آخری اول اجرا میشه.
defer fmt.Println("A")
defer fmt.Println("B")
defer fmt.Println("C")خروجی:
C
B
A
⚠️ نکتهی مهم
تو لوپهایی که زیاد تکرار میشن، زیاد از defer استفاده نکن، چون ممکنه کارایی بیاد پایین. بهجاش مستقیم اون تابع رو همون موقع صدا بزن.
🧹 جمعبندی
defer ابزار تمیزکاری تو Go هست. کمک میکنه کدت مرتب، ایمن و بدون نشتی منابع باشه. مخصوصا تو پروژههای واقعی خیلی کاربردیه!
اگه تجربه کار با defer داری، تو کامنتا بنویس 👇🏻
#golang #defer
☕️Telegram | Website | Discord