गो की सामान्य क्षमताओं की अनुपस्थिति कार्यात्मकताओं को सामान्य बनाने का प्रयास करते समय चुनौतियां पैदा करती है। एक सामान्य परिदृश्य एक सामान्य त्रुटि प्रबंधन फ़ंक्शन की आवश्यकता है जो मान और त्रुटि लौटाने वाले किसी भी फ़ंक्शन पर लागू होता है।
प्रदान किया गया उदाहरण एक खाली इंटरफ़ेस का उपयोग करके ऐसा फ़ंक्शन बनाने का प्रयास दर्शाता है:
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