Go में फंक्शन पैरामीटर: शुरुआत से उन्नत तक 15 मिनट में

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

क्या फंक्शन को पैरामीटर के रूप में पास किया जा सकता है? हाँ, और यही सब कुछ बदल देता है

\n\n

क्या आपने कभी सोचा है कि क्या Go में एक फंक्शन को दूसरे फंक्शन के अंदर एक सामान्य वेरिएबल की तरह पास किया जा सकता है? अगर आप Python या JavaScript की दुनिया से आए हैं, तो यह आपके लिए एक सामान्य पैटर्न है। लेकिन Go में, अपनी सख्ती के बावजूद, फंक्शन को पैरामीटर के रूप में पास करना सिर्फ "संभव" नहीं है, बल्कि यह भाषा के सबसे शक्तिशाली टूल्स में से एक है।

\n\n

मुझे याद है जब मैं पहली बार इस कॉन्सेप्ट से मिला था: मैं लॉग प्रोसेस करने के लिए एक यूटिलिटी लिख रहा था और मुझे एहसास हुआ कि मैं अलग-अलग लॉजिक के साथ एक ही लूप को बार-बार कॉपी-पेस्ट कर रहा हूँ। समाधान तब मिला जब मैंने समझा कि मैं ज़रूरी फंक्शन को एक आर्गुमेंट के रूप में पास कर सकता हूँ। कोड साफ़, छोटा और समझने में आसान हो गया। इस आर्टिकल में मैं आपको दिखाऊंगा कि Go में फंक्शन को फंक्शन में पास करना कैसे सीखें — सरल उदाहरणों से लेकर रियल-वर्ल्ड पैटर्न तक जिन्हें आप कल अपनी नौकरी पर इस्तेमाल कर सकते हैं।

\n\n

वैसे, PythonLib पर हम अक्सर Stack Overflow पर "Can functions be passed as parameters?" जैसे सवाल देखते हैं जिनके हज़ारों व्यूज़ होते हैं। आइए Go के उदाहरण के साथ इस टॉपिक को हमेशा के लिए समझ लें।

\n\n

Go में फंक्शन को पैरामीटर के रूप में क्या है?

\n\n

Go में फंक्शन फर्स्ट-क्लास ऑब्जेक्ट हैं। इसका मतलब है कि इन्हें:

\n
    \n
  • वेरिएबल्स को असाइन किया जा सकता है
  • \n
  • दूसरे फंक्शन में पास किया जा सकता है
  • \n
  • फंक्शन से रिटर्न किया जा सकता है
  • \n
  • स्ट्रक्चर और स्लाइस में स्टोर किया जा सकता है
  • \n
\n\n

जब हम फंक्शन को पैरामीटर के रूप में बात करते हैं, तो हमारा मतलब है कि एक फंक्शन दूसरे फंक्शन को आर्गुमेंट के रूप में लेता है और उसे अपने अंदर कॉल करता है। मुश्किल लगता है? असल में यह जितना लगता है उससे कहीं ज़्यादा आसान है।

\n\n

सिंटैक्स: एक फंक्शन को कैसे घोषित करें जो दूसरे फंक्शन को लेता है

\n\n

Go में पैरामीटर फंक्शन का टाइप स्पष्ट रूप से बताना ज़रूरी है। यह इस तरह दिखता है:

\n\n
// फंक्शन टाइप घोषित करना\ntype Transformer func(string) string\n\n// फंक्शन जो दूसरे फंक्शन को लेता है\nfunc processText(text string, transform Transformer) string {\n    return transform(text)\n}
\n\n

या फिर टाइप को सीधे सिग्नेचर में घोषित कर सकते हैं:

\n\n
func processText(text string, transform func(string) string) string {\n    return transform(text)\n}
\n\n

दोनों तरीके काम करते हैं। पहला तरीका बेहतर है अगर आप टाइप को बार-बार इस्तेमाल करने की योजना बनाते हैं। दूसरा तरीका त्वरित समाधान के लिए है।

\n\n

सरल उदाहरण: ग्रीटिंग फंक्शन पास करना

\n\n

चलिए कुछ व्यावहारिक लिखते हैं। मान लीजिए कि आपके पास एक फंक्शन है जो यूज़र का नाम फ़ॉर्मेट करता है, और आप अलग-अलग अभिवादन जोड़ना चाहते हैं:

\n\n
package main\n\nimport "fmt"\n\n// ग्रीटिंग फंक्शन के लिए टाइप\ntype Greeter func(name string) string\n\n// फंक्शन जो ग्रीटिंग को लेता है\nfunc greetUser(name string, greeter Greeter) {\n    message := greeter(name)\n    fmt.Println(message)\n}\n\nfunc main() {\n    // सामान्य अभिवादन\n    normalGreet := func(name string) string {\n        return "नमस्ते, " + name + "!"\n    }\n\n    // औपचारिक अभिवादन\n    formalGreet := func(name string) string {\n        return "आदरणीय " + name + ", शुभ दिन।"\n    }\n\n    greetUser("अन्ना", normalGreet)\n    greetUser("अन्ना", formalGreet)\n}
\n\n

आउटपुट:

\n
नमस्ते, अन्ना!\nआदरणीय अन्ना, शुभ दिन।
\n\n

देखा? हमने एक ही greetUser में अलग-अलग फंक्शन पास किए। यही है फंक्शन को आर्गुमेंट के रूप में पास करना।

\n\n

कॉलबैक फंक्शन: जब रिजल्ट को प्रोसेस करना हो

\n\n

फंक्शन को पैरामीटर के रूप में इस्तेमाल करने का सबसे आम तरीका कॉलबैक है। आप कोई ऑपरेशन करते हैं और जब वह पूरा हो जाता है तो पास किए गए फंक्शन को कॉल करते हैं।

\n\n
package main\n\nimport (\n    "fmt"\n    "time"\n)\n\n// फंक्शन जो लंबी डेटा लोडिंग का अनुकरण करता है\nfunc fetchData(callback func(string)) {\n    fmt.Println("डेटा लोड हो रहा है...")\n    time.Sleep(2 * time.Second) // देरी का अनुकरण\n    data := "डेटाबेस से महत्वपूर्ण डेटा"\n    callback(data)                

ब्लॉग

पुस्तक अनुशंसाएँ