मुख्य सामग्री पर जाएं
मॉड्यूल 1 · पाठ 4 का 5पाठ्यक्रम में 4/50~8 min
मॉड्यूल पाठ (4/5)

संचालक

गो के पास कुछ आश्चर्यों के साथ क्लासिक ऑपरेटर हैं जिनकी आप अपेक्षा करते हैं: अंकगणित, तुलना, तार्किक, बिटवाइज़। कोई टर्नरी ऑपरेटर नहीं (a ? b : c), कोई ओवरलोडिंग नहीं, प्रकारों के बीच कोई अंतर्निहित रूपांतरण नहीं। सरलता एक विशेषता है.

अंकगणित

Go
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++ नहीं।

Go
x := 5
x++          // ok: incrementa x
// y := x++  // ERRORE di compilazione
fmt.Println(x) // 6

तुलना

== != < <= > >= वापसी bool। वे संख्याओं और तारों पर लागू होते हैं; के लिए संरचनाएं सभी फ़ील्ड तुलनीय होनी चाहिए (अंदर कोई स्लाइस/मानचित्र नहीं)।

Go
"abc" == "abc"  // true
"abc" < "abd"   // true (ordine lessicografico)
3 != 4           // true

शॉर्ट-सर्किट के साथ तार्किक

&&, ||, !। वे बाएँ से दाएँ शॉर्ट-सर्किट करते हैं: यदि पहला ऑपरेंड परिणाम निर्धारित करने के लिए पर्याप्त है, दूसरा भी नहीं है मूल्यांकन किया गया।

Go
adult := age >= 18
seniorAdult := age >= 18 && age < 65

बिटवाइज़

& और, | OR, ^ नहीं (थोड़ा स्पष्ट)। वे झंडे, बाइनरी पार्सिंग आदि के लिए उपयोगी हैं अनुकूलन:

Go
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 की आवश्यकता है।

Go
i := 1
f := 1.5
// i + f          // ERRORE
float64(i) + f    // 2.5

आपकी बारी

व्यायाम#go.m1.l4.e1
प्रयास: 0लोड हो रहा है...

17 को 5 से विभाजित करने पर शेषफल की गणना करें और प्रिंट करें। अपेक्षित: 2.

संपादक लोड हो रहा है...
संकेत दिखाएँ

मॉड्यूलो ऑपरेटर `%` है।

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम#go.m1.l4.e2
प्रयास: 0लोड हो रहा है...

यदि आयु 18 से 65 वर्ष के बीच है तो सही प्रिंट करें, अन्यथा गलत प्रिंट करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

`&&` के साथ दो तुलनाओं को संयोजित करें।

3 प्रयासों के बाद समाधान उपलब्ध है

Quiz#go.m1.l4.e3
तैयार

यह कोड क्या प्रिंट करता है?

Go
a, b := 7, 2
fmt.Println(a/b, a%b)
उत्तर विकल्प

संक्षिप्त

  • क्लासिक अंकगणित; / इंट्स के बीच पूर्णांक विभाजन (छंटनी) है।
  • ++ और -- कथन हैं, अभिव्यक्ति नहीं: नहीं y := x++।
  • तुलना और तार्किक ऑपरेटर bool उत्पन्न करते हैं; &&/|| शॉर्ट-सर्किट।
  • फ़्लैग और बाइनरी पार्सिंग के लिए बिटवाइज़ & | ^ << >> &^।
  • विभिन्न प्रकारों के बीच कोई अंतर्निहित रूपांतरण नहीं: type(x) का उपयोग करें।