دروس الوحدة (4/5)
مشغلي
يحتوي Go على عوامل التشغيل الكلاسيكية التي تتوقعها، مع بعض المفاجآت:
الحسابية، المقارنة، المنطقية، bitwise. لا يوجد مشغل ثلاثي
(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-- لا ينتجان قيمة: إنهما "إجراءات" ولا شيء
المزيد. لا يوجد y := x++ كما هو الحال في C.
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 < 65Bitwise
& و، | أو، ^ XOR، << التحول الأيسر، >> التحول الأيمن، &^ و
ليس (واضح بعض الشيء). إنها مفيدة للأعلام والتحليل الثنائي و
التحسينات:
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.
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)خلاصة
- الحساب الكلاسيكي.
/بين ints هو تقسيم عدد صحيح (اقتطاع). ++و--عبارة عن عبارات وليست تعبيرات: لا يوجدy := x++.- تنتج عوامل المقارنة والمنطق
bool؛&&/||دائرة كهربائية قصيرة. - Bitwise
& | ^ << >> &^للأعلام والتحليل الثنائي. - لا توجد تحويلات ضمنية بين الأنواع المختلفة: استخدم
type(x).