الانتقال إلى المحتوى الرئيسي
الوحدة 1 · الدرس 4 من 54/50 في الدورة~8 min
دروس الوحدة (4/5)

مشغلي

يحتوي Go على عوامل التشغيل الكلاسيكية التي تتوقعها، مع بعض المفاجآت: الحسابية، المقارنة، المنطقية، bitwise. لا يوجد مشغل ثلاثي (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-- لا ينتجان قيمة: إنهما "إجراءات" ولا شيء المزيد. لا يوجد y := x++ كما هو الحال في C.

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

Bitwise

& و، | أو، ^ XOR، << التحول الأيسر، >> التحول الأيمن، &^ و ليس (واضح بعض الشيء). إنها مفيدة للأعلام والتحليل الثنائي و التحسينات:

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 في Go يترجم، لأن كلاهما حرفي غير مكتوب. لكن 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)
خيارات الإجابة

خلاصة

  • الحساب الكلاسيكي. / بين ints هو تقسيم عدد صحيح (اقتطاع).
  • ++ و-- عبارة عن عبارات وليست تعبيرات: لا يوجد y := x++.
  • تنتج عوامل المقارنة والمنطق bool؛ &&/|| دائرة كهربائية قصيرة.
  • Bitwise & | ^ << >> &^ للأعلام والتحليل الثنائي.
  • لا توجد تحويلات ضمنية بين الأنواع المختلفة: استخدم type(x).