ماڈیول اسباق (4/5)
آپریٹرز
Go کے پاس کلاسک آپریٹرز ہیں جن کی آپ توقع کریں گے، چند حیرتوں کے ساتھ:
ریاضی، موازنہ، منطقی، بٹ وار۔ کوئی ٹرنری آپریٹر نہیں ہے۔
(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۔ وہ نمبروں اور تاروں پر لاگو ہوتے ہیں۔ کے لیے
structs تمام فیلڈز کا موازنہ ہونا چاہیے (اندر کوئی سلائس/نقشہ نہیں)۔
"abc" == "abc" // true
"abc" < "abd" // true (ordine lessicografico)
3 != 4 // trueشارٹ سرکٹ کے ساتھ منطقی
&&, ||, !۔ وہ بائیں سے دائیں طرف شارٹ سرکٹ کرتے ہیں: اگر پہلے
نتیجہ کا تعین کرنے کے لیے اوپرینڈ کافی ہے، دوسرا بھی نہیں ہے۔
اندازہ کیا
adult := age >= 18
seniorAdult := age >= 18 && age < 65Bitwise
& اور، | یا، ^ XOR، << بائیں شفٹ، >> دائیں شفٹ، __PROTECTED_INLINE_20 اور
نہیں (تھوڑا صاف) وہ جھنڈوں، بائنری پارسنگ اور کے لیے مفید ہیں۔
اصلاح:
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کوئی مضمر تبدیلیاں نہیں۔
Go compiles میں 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)Recap
- کلاسیکی ریاضی؛
/ints کے درمیان عددی تقسیم ہے (چھوٹی ہوئی)۔ ++اور--بیانات ہیں، اظہار نہیں: نہیںy := x++۔- موازنہ اور منطقی آپریٹرز
boolپیدا کرتے ہیں؛&&/||شارٹ سرکٹ۔ - Bitwise
& | ^ << >> &^جھنڈوں اور بائنری پارسنگ کے لیے۔ - مختلف اقسام کے درمیان کوئی مضمر تبدیلیاں نہیں:
type(x)استعمال کریں۔