मॉड्यूल पाठ (4/5)
संचालक
गो के पास कुछ आश्चर्यों के साथ क्लासिक ऑपरेटर हैं जिनकी आप अपेक्षा करते हैं:
अंकगणित, तुलना, तार्किक, बिटवाइज़। कोई टर्नरी ऑपरेटर नहीं
(a ? b : c), कोई ओवरलोडिंग नहीं, प्रकारों के बीच कोई अंतर्निहित रूपांतरण नहीं।
सरलता एक विशेषता है.
अंकगणित
a, b := 10, 3
fmt.Println(a + b) // 13
fmt.Println(a - b) // 7
fmt.Println(a * b) // 30
fmt.Println(a / b) // 3 ← divisione INTERA tra interi
fmt.Println(a % b) // 1 ← resto (modulo)वृद्धि और कमी कथन हैं, अभिव्यक्ति नहीं
x++ और x-- कोई मान उत्पन्न नहीं करते: वे "क्रियाएँ" हैं और कुछ भी नहीं
अधिक. C की तरह कोई y := x++ नहीं।
x := 5
x++ // ok: incrementa x
// y := x++ // ERRORE di compilazione
fmt.Println(x) // 6तुलना
== != < <= > >= वापसी bool। वे संख्याओं और तारों पर लागू होते हैं; के लिए
संरचनाएं सभी फ़ील्ड तुलनीय होनी चाहिए (अंदर कोई स्लाइस/मानचित्र नहीं)।
"abc" == "abc" // true
"abc" < "abd" // true (ordine lessicografico)
3 != 4 // trueशॉर्ट-सर्किट के साथ तार्किक
&&, ||, !। वे बाएँ से दाएँ शॉर्ट-सर्किट करते हैं: यदि पहला
ऑपरेंड परिणाम निर्धारित करने के लिए पर्याप्त है, दूसरा भी नहीं है
मूल्यांकन किया गया।
adult := age >= 18
seniorAdult := age >= 18 && age < 65बिटवाइज़
& और, | OR, ^
नहीं (थोड़ा स्पष्ट)। वे झंडे, बाइनरी पार्सिंग आदि के लिए उपयोगी हैं
अनुकूलन:
flags := uint8(0b0000_0011)
flags |= 0b0000_0100 // imposta un bit: 0000_0111
flags &^= 0b0000_0010 // cancella un bit: 0000_0101
hasFlag := flags & 0b0000_0100 != 0 // trueकोई अंतर्निहित रूपांतरण नहीं
1 + 1.5 गो में संकलित होता है, क्योंकि दोनों ही अलिखित अक्षर हैं।
लेकिन var i int = 1; i + 1.5 नहीं करता है: आपको float64(i) + 1.5 की आवश्यकता है।
i := 1
f := 1.5
// i + f // ERRORE
float64(i) + f // 2.5आपकी बारी
17 को 5 से विभाजित करने पर शेषफल की गणना करें और प्रिंट करें। अपेक्षित: 2.
संकेत दिखाएँ
मॉड्यूलो ऑपरेटर `%` है।
3 प्रयासों के बाद समाधान उपलब्ध है
यदि आयु 18 से 65 वर्ष के बीच है तो सही प्रिंट करें, अन्यथा गलत प्रिंट करें।
संकेत दिखाएँ
`&&` के साथ दो तुलनाओं को संयोजित करें।
3 प्रयासों के बाद समाधान उपलब्ध है
यह कोड क्या प्रिंट करता है?
a, b := 7, 2
fmt.Println(a/b, a%b)संक्षिप्त
- क्लासिक अंकगणित;
/इंट्स के बीच पूर्णांक विभाजन (छंटनी) है। ++और--कथन हैं, अभिव्यक्ति नहीं: नहींy := x++।- तुलना और तार्किक ऑपरेटर
boolउत्पन्न करते हैं;&&/||शॉर्ट-सर्किट। - फ़्लैग और बाइनरी पार्सिंग के लिए बिटवाइज़
& | ^ << >> &^। - विभिन्न प्रकारों के बीच कोई अंतर्निहित रूपांतरण नहीं:
type(x)का उपयोग करें।