"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जेनेरिक के बिना जाने पर जेनेरिक त्रुटि प्रबंधन कैसे कार्यान्वित करें?

जेनेरिक के बिना जाने पर जेनेरिक त्रुटि प्रबंधन कैसे कार्यान्वित करें?

2024-11-23 को प्रकाशित
ब्राउज़ करें:163

How to Implement Generic Error Handling in Go Without Generics?

गो में सामान्य त्रुटि प्रबंधन को लागू करना

गो की सामान्य क्षमताओं की अनुपस्थिति कार्यात्मकताओं को सामान्य बनाने का प्रयास करते समय चुनौतियां पैदा करती है। एक सामान्य परिदृश्य एक सामान्य त्रुटि प्रबंधन फ़ंक्शन की आवश्यकता है जो मान और त्रुटि लौटाने वाले किसी भी फ़ंक्शन पर लागू होता है।

प्रदान किया गया उदाहरण एक खाली इंटरफ़ेस का उपयोग करके ऐसा फ़ंक्शन बनाने का प्रयास दर्शाता है:

func P(any interface{}, err error) (interface{}) {
    if err != nil {
        panic("error: "  err.Error())
    }
    return any
}

हालांकि यह दृष्टिकोण त्रुटि प्रबंधन के लिए काम करता है, यह प्रकार की जानकारी खो देता है, जिसके परिणामस्वरूप इंटरफ़ेस खाली हो जाता है।

प्रकार-विशिष्ट त्रुटि प्रबंधन फ़ंक्शन उत्पन्न करना

समस्या से बचने के लिए खोई हुई प्रकार की जानकारी, विभिन्न प्रकारों के लिए त्रुटि प्रबंधन फ़ंक्शन के विशेष कार्यान्वयन बनाने के लिए कोड जनरेशन का उपयोग करने पर विचार करें। इसे "गो जनरेट", "जेनगेन", "जेनी", या "जेन" जैसे टूल का उपयोग करके प्राप्त किया जा सकता है।

उदाहरण के लिए, "जेन" का उपयोग करके, आप एक टेम्पलेट परिभाषित कर सकते हैं:

// template.go

package main

import "fmt"

func P[T any](v T, err error) (T) {
    if err != nil {
        panic(fmt.Sprintf("error: %v", err))
    }
    return v
}

इस टेम्पलेट का उपयोग P() के प्रकार-विशिष्ट कार्यान्वयन उत्पन्न करने के लिए किया जा सकता है:

gen generate

यह इस तरह के कार्यान्वयन तैयार करेगा:

// p_int.go

package main

func PInt(v int, err error) (int) {
    if err != nil {
        panic(fmt.Sprintf("error: %v", err))
    }
    return v
}

इन जेनरेट किए गए फ़ंक्शंस का उपयोग करके, प्रकार की जानकारी संरक्षित की जाती है और त्रुटि प्रबंधन को विशिष्ट प्रकारों पर निर्बाध रूप से लागू किया जा सकता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3