डेफ़र इन गो से लौट रहे हैं
आप एक समस्या का सामना कर रहे हैं जहां आप एक त्रुटि वापस करना चाहते हैं यदि कोई फ़ंक्शन गो में घबरा जाता है। यहां आपके कोड का विश्लेषण और समाधान दिया गया है:
func getReport(filename string) (rep report, err error) { rep.data = make(map[string]float64) defer func() { if r := recover(); r != nil { fmt.Println("Recovered in f", r) switch x := r.(type) { case string: err = errors.New(x) case error: err = x default: err = errors.New("Unknown panic") } rep = nil // Invalidate rep } }() panic("Report format not recognized.") // rest of the getReport function... }
डिफ़र: एक डिफ़र स्टेटमेंट किसी फ़ंक्शन के निष्पादन में आसपास के फ़ंक्शन तक देरी करता है निकास।
प्रतिनिधि चर एक त्रुटि के बाद अमान्य हो जाता है यह सुनिश्चित करने के लिए मुठभेड़ करें कि यह कोई डेटा नहीं लौटाता है। यदि आपका getReport फ़ंक्शन किसी अमान्य रिपोर्ट प्रारूप के कारण घबराता है तो वह एक त्रुटि लौटाएगा। त्रुटि संदेश या तो पैनिक वैल्यू होगा (यदि कोई स्ट्रिंग है) या एक अज्ञात पैनिक का संकेत देने वाली सामान्य त्रुटि होगी।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3