TGViewer
کداکسپلور | CodeExplore کداکسپلور | CodeExplore @codeexplore · 9.2K subscribers
Post #3789 2.19K
🚀 توابع Currying در Go — ساخت توابع مرحله‌ای و داینامیک با قدرت Closures
در Go، مثل زبان‌های فانکشنال، می‌تونی توابعی بسازی که به جای گرفتن همه آرگومان‌ها یک‌جا، هر آرگومان رو در یک مرحله بگیرن. به این تکنیک می‌گیم:

🎯 Currying
یعنی تبدیل تابعی با چند آرگومان به توابع تو در تو، که هر کدوم فقط یک آرگومان می‌گیرن.

✅ مثال واقعی: ضرب با عدد ثابت
func multiply(x int) func(int) int {
return func(y int) int {
return x * y
}
}

func main() {
times10 := multiply(10)
fmt.Println(times10(3)) // 30
fmt.Println(times10(7)) // 70
}


📌 اینجا تابع multiply(10) خودش یه تابع جدید می‌سازه (times10) که همیشه با ۱۰ ضرب می‌کنه.

🧠 به چه دردی می‌خوره؟
✅ ساخت توابع با پارامترهای پیش‌فرض
✅ پیاده‌سازی ساده‌تر توابع داینامیک
✅ خوانایی و تست‌پذیری بهتر
✅ کمک به معماری فانکشنال در Go با ترکیب‌پذیری بالا

🧩 حتی می‌تونی با Generic‌ها توابع کلی بسازی:
func curry2[A, B, C any](f func(A, B) C) func(A) func(B) C {
return func(a A) func(B) C {
return func(b B) C {
return f(a, b)
}
}
}

حالا می‌تونی توابع ۲ پارامتری رو به صورت مرحله‌ای صدا بزنی:

add := func(x, y int) int { return x + y }
curriedAdd := curry2(add)

fmt.Println(curriedAdd(2)(3)) // 5

#GoLang #Currying #Closure #Functions #Backend #برنامه_نویسی #گو
☕️Telegram | Website | Discord
  • 🔥 7
More from @codeexplore
  1. Oct 8, 2026🙂😂 #fun ☕️ Telegram | Website | Discord
  2. Oct 8, 2026برای اولین بار در تاریخ CVE ها یک عدد 6 رقمی گرفتند! و این عمق فاجعه آسیب پذیری های پیدا ش…
  3. Oct 7, 2026‏Graphify یه ابزار اوپن سورسه که باهاش میتونید ببینید بخشای مختلف پروژه چطور به هم وصل…
  4. Oct 5, 2026😂😮 #fun ☕️ Telegram | Website | Discord
  5. Oct 5, 2026‏Vengeance UI مجموعه‌ای از Component های اوپن سورس انیمیشنی پر استفاده رو با افکتای مخ…
  6. Oct 4, 2026پشت هر شخصیت برنامه‌نویس، سال ها یادگیری، تلاش و آزمون‌وخطا وجود داره. ☕️ Telegram | Websi…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →