برنامه نویسی

درک عملکردهای ناشناس در GO: یک راهنمای عملی

عملکرد ناشناس چیست؟

در تابع ناشناس یک تابع است بدون نامبشر به جای اینکه مانند یک عملکرد سنتی نامگذاری شود ، به صورت خطی تعریف شده و به یک متغیر اختصاص داده می شود یا بلافاصله اجرا می شود.

نحو اساسی

func main() {
    add := func(a, b int) int {
        return a + b
    }
    fmt.Println(add(3, 5)) // Output: 8
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

📌 اینجا ، add دارای یک عملکرد ناشناس است که دو عدد صحیح را می گیرد و مبلغ آنها را برمی گرداند.


از موارد توابع ناشناس استفاده کنید

1⃣ عبور توابع ناشناس به عنوان آرگومان

از آنجا که توابع می توانند به عنوان آرگومان منتقل شوند ، توابع ناشناس برای توابع مرتبه بالاتر مفید هستند.

func operate(a, b int, op func(int, int) int) int {
    return op(a, b)
}

func main() {
    result := operate(4, 2, func(x, y int) int {
        return x * y
    })
    fmt.Println("Multiplication:", result) // Output: 8
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

از مورد استفاده کنید: در توابع پاسخ به تماس یا منطق پردازش سفارشی مفید است.


2⃣ با استفاده از توابع ناشناس در goroutines

گوروتین ها امکان اجرای همزمان را فراهم می کنند ، و عملکردهای ناشناس راهی عالی برای تعریف کارهای همزمان کوتاه مدت است.

func main() {
    go func() {
        fmt.Println("Hello from Goroutine!")
    }()
    time.Sleep(time.Second) // Allow Goroutine to execute
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

از مورد استفاده کنید: انجام وظایف پس زمینه بدون تعریف یک عملکرد نامگذاری شده.


3⃣ بازگشت توابع ناشناس (بسته شدن)

بسته شدن ها به یک عملکرد ناشناس اجازه می دهد تا متغیرهایی را از دامنه اطراف آن ضبط کند.

func multiplier(factor int) func(int) int {
    return func(x int) int {
        return x * factor
    }
}

func main() {
    double := multiplier(2)
    fmt.Println(double(5)) // Output: 10
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

از مورد استفاده کنید: ایجاد شده کارخانه های تابعی این حالت را حفظ می کند.


4⃣ ذخیره توابع ناشناس در یک نقشه

می توانید توابع ناشناس را در نقشه برای اجرای پویا ذخیره کنید.

func main() {
    operations := map[string]func(int, int) int{
        "add": func(a, b int) int { return a + b },
        "sub": func(a, b int) int { return a - b },
    }
    fmt.Println("Addition:", operations["add"](4, 2)) // Output: 6
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

از مورد استفاده کنید: اجرا کننده جستجوی عملکرد پویا یا سیستم اعزام فرمانبشر


IIFE (بیان عملکرد بلافاصله فراخوانی شده) چیست؟

در iife (بلافاصله بیان عملکرد) یک عملکرد ناشناس است که اجرا می شود بلافاصله پس از تعریفبشر

func main() {
    result := func(a, b int) int {
        return a + b
    }(3, 5) // Function executes immediately

    fmt.Println(result) // Output: 8
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

از مورد استفاده کنید: منطق تنظیم یک بار ، کاهش دامنه متغیر غیر ضروری.


پایان

توابع ناشناس در GO انعطاف پذیری و برنامه نویسی مختصر را ارائه می دهد و آنها را به ابزاری قدرتمند برای:

  • توابع مرتبه بالاتر
  • اعدام همزمان (goroutines)
  • بسته شدن (حالت حفظ)
  • جستجوی عملکرد پویا
  • اجرای یک بار (IIFE)

با درک و اجرای مؤثر توابع ناشناس ، می توانید بنویسید پاک کنندهبا ماژولاروت کارآمد برو کد

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا