मैं jnml के जवाब से सहमत हूँ कि वे दोनों मुहावरेदार कोड हैं, और निम्नलिखित जोड़ सकते हैं:
आपका पहला उदाहरण:
if err != nil {
//handle err
}
एक से अधिक रिटर्न वैल्यू से निपटने पर अधिक मुहावरेदार है। उदाहरण के लिए:
val, err := someFunc()
if err != nil {
//handle err
}
//do stuff with val
आपका दूसरा उदाहरण अच्छा शॉर्टहैंड है जब केवल err
मूल्य के साथ काम कर रहा है । यह तब लागू होता है जब फ़ंक्शन केवल एक रिटर्न देता है error
, या यदि आप जानबूझकर लौटाए गए मानों को छोड़कर अनदेखा करते हैं error
। एक उदाहरण के रूप में, यह कभी कभी के साथ प्रयोग किया जाता है Reader
औरWriter
कार्यों कि एक वापसी int
लिखा बाइट्स (कभी कभी अनावश्यक जानकारी) की संख्या की और एक error
:
if _, err := f.Read(file); err != nil {
//handle err
}
//do stuff with f
यदि इनिशियलाइज़ेशन स्टेटमेंट का उपयोग किया जाता है तो दूसरे फॉर्म को संदर्भित किया जाता है ।
इसलिए सर्वोत्तम प्रथाओं के संबंध में, जहां तक मुझे पता है (उपयोग करने के अलावा) जब आपको उनकी आवश्यकता है, तो नई त्रुटियों को बनाने के लिए "त्रुटियों" पैकेज ) आपने बहुत सारी चीजों को कवर किया है जो आपको Go में त्रुटियों को जानने की जरूरत है!
संपादित करें: यदि आप पाते हैं कि आप वास्तव में अपवादों के बिना नहीं रह सकते हैं, तो आप उनके साथ नकल कर सकते हैं defer
, panic
औरrecover
।