मॉड्यूल पाठ (1/5)
यदि, अन्यथा, और init कथन
गो में if सिंटैक्स क्लासिक है लेकिन दो महत्वपूर्ण अंतरों के साथ
सी/जावा की तुलना में: स्थिति के चारों ओर कोई कोष्ठक नहीं, और
यदि में सीधे एक अस्थायी चर घोषित करने की क्षमता
(इनिट स्टेटमेंट)।
मूल वाक्यविन्यास
if temperatura > 30 {
fmt.Println("caldo")
} else if temperatura > 20 {
fmt.Println("mite")
} else {
fmt.Println("fresco")
}ब्रेसेस अनिवार्य हैं, यहां तक कि सिंगल-लाइन ब्लॉक के लिए भी। द
शर्त bool प्रकार की होनी चाहिए: Python या JS जैसी कोई "सच्चाई" नहीं।
n := 0
// if n { ... } // ERRORE: int non è bool
if n != 0 { ... } // okInit कथन: दायरा if तक सीमित है
आप if/else के अंदर एक वैरिएबल को केवल वैध घोषित कर सकते हैं।
इसे ; के साथ शर्त से अलग करना:
if v, err := call(); err == nil {
fmt.Println("ok", v)
} else {
fmt.Println("ko", err)
}
// qui v ed err NON esistono piùयह बाहरी दायरे को प्रदूषित किए बिना त्रुटियों से निपटने का मुहावरेदार पैटर्न है।
यदि दायरे में छायांकन
यदि किसी बाहरी चर को init द्वारा "छाया" मिलता है, तो अंदर यदि स्थानीय संस्करण जीतता है. ठीक इसके बाद, बाहरी व्यक्ति फिर से उभर आता है।
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x) // mai stampato (3 < 5)
} else {
fmt.Println("else:", x) // 3
}
fmt.Println("dopo:", x) // 10 — quella esternaकोई टर्नरी ऑपरेटर नहीं
गो के पास कोई cond ? a : b नहीं है। सशर्त असाइनमेंट के लिए आपको if/else की आवश्यकता है
3-4 पंक्तियों में - यह पठनीयता को बढ़ावा देने के लिए एक डिज़ाइन विकल्प है।
var label string
if age >= 18 {
label = "adulto"
} else {
label = "minore"
}इसे अजमाएं
n के मान के आधार पर 'सकारात्मक', 'शून्य' या 'नकारात्मक' प्रिंट करें।
संकेत दिखाएँ
`यदि / अन्यथा यदि / अन्यथा` संकेत पर शर्तों के साथ श्रृंखला।
3 प्रयासों के बाद समाधान उपलब्ध है
यदि में v := 42 घोषित करने के लिए init कथन का उपयोग करें और इसे केवल तभी प्रिंट करें यदि v >= 18 हो।
संकेत दिखाएँ
सिंटैक्स: `यदि init; शर्त {... }`.
3 प्रयासों के बाद समाधान उपलब्ध है
यह प्रोग्राम क्या प्रिंट करता है?
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x)
} else {
fmt.Println("else:", x)
}
fmt.Println("dopo:", x)संक्षिप्त
- कोष्ठक के बिना स्थितियाँ, ब्रेसिज़ हमेशा अनिवार्य।
- शर्त
boolहोनी चाहिए: कोई अंतर्निहित सत्यता नहीं। - Init
if v, err := f(); err == nil { ... }vऔरerrके दायरे को सीमित करता है। - इनिट में शैडोइंग: सावधान रहें कि बाहरी वेरिएबल्स को शैडो न करें।
- कोई टर्नरी नहीं: एक विस्तारित
if/elseलिखें।