مرکزی مواد پر جائیں
ماڈیول 1 · سبق 4 از 5کورس میں 4/50~8 min
ماڈیول اسباق (4/5)

آپریٹرز

Go کے پاس کلاسک آپریٹرز ہیں جن کی آپ توقع کریں گے، چند حیرتوں کے ساتھ: ریاضی، موازنہ، منطقی، بٹ وار۔ کوئی ٹرنری آپریٹر نہیں ہے۔ (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۔ وہ نمبروں اور تاروں پر لاگو ہوتے ہیں۔ کے لیے structs تمام فیلڈز کا موازنہ ہونا چاہیے (اندر کوئی سلائس/نقشہ نہیں)۔

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

شارٹ سرکٹ کے ساتھ منطقی

&&, ||, !۔ وہ بائیں سے دائیں طرف شارٹ سرکٹ کرتے ہیں: اگر پہلے نتیجہ کا تعین کرنے کے لیے اوپرینڈ کافی ہے، دوسرا بھی نہیں ہے۔ اندازہ کیا

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

Bitwise

& اور، | یا، ^ XOR، << بائیں شفٹ، >> دائیں شفٹ، __PROTECTED_INLINE_20 اور نہیں (تھوڑا صاف) وہ جھنڈوں، بائنری پارسنگ اور کے لیے مفید ہیں۔ اصلاح:

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

کوئی مضمر تبدیلیاں نہیں۔

Go compiles میں 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)
جواب کے اختیارات

Recap

  • کلاسیکی ریاضی؛ / ints کے درمیان عددی تقسیم ہے (چھوٹی ہوئی)۔
  • ++ اور -- بیانات ہیں، اظہار نہیں: نہیں y := x++۔
  • موازنہ اور منطقی آپریٹرز bool پیدا کرتے ہیں؛ &&/|| شارٹ سرکٹ۔
  • Bitwise & | ^ << >> &^ جھنڈوں اور بائنری پارسنگ کے لیے۔
  • مختلف اقسام کے درمیان کوئی مضمر تبدیلیاں نہیں: type(x) استعمال کریں۔