مرحبا بالجميع! نشارك اليوم الجزء الأخير من ترجمة المقال "ما هو وما هو غير موجود". نذكرك أننا تحدثنا في
الجزء الأول عن العناصر الموجودة في Go ، اليوم سنتحدث عن ما هو غير موجود في Go.
تم إعداد ترجمة لهذه المواد تحسبا لبدء تشغيل دفق جديد في دورة Golang Developer .
تم إنشاء Go مع نظرة إلى الوراء ، وحزمتها الأساسية مؤلفة بشكل جيد: تحتوي على مجموعة من البيانات المهملة ، والحزم ، ووظائف من الدرجة الأولى ، والنطاق المعجمي ، وواجهة اتصال النظام ، والخطوط الثابتة ، والتي يتم تشفير نصها عادةً في UTF-8. لكن لديها ميزات قليلة نسبيا وليس من المرجح أن تزيد عددهم. على سبيل المثال ، لا تحتوي على تحويلات عددية ضمنية ، ولا مُنشآت أو مدمرات ، ولا يوجد حمل زائد للمشغل ، ولا توجد قيم معلمات افتراضية ، ولا توارث ، ولا توارث ولا استثناءات ، ولا وحدات ماكرو ، ولا تعليقات توضيحية للوظائف ، ولا تخزين دفق محلي.
العناصر غير موجودة في Go
تحويل الرقم الضمني
في البرمجة ، يتضمن تحويل النوع تغيير نوع بيانات كائن إلى آخر. التحويل الضمني يعني أن هذا التغيير يتم تلقائيًا بواسطة مترجم أو مترجم. على سبيل المثال ، تعيين قيمة int لمتغير تم تعيينه مسبقًا على قيمة الفاصلة العائمة. هذا التحويل غير متاح في Go. عندما لا يتم ذكر نوع عند التصريح عن متغير ، يتم تخصيص نوع مناسب له ، على سبيل المثال ، int ، float ، string ، إلخ ، بناءً على التركيب النحوي للحرف. في المثال أدناه ، سوف يرسل Go خطأ لأنه سيجد نوعين مختلفين من البيانات ولن يكون بمقدوره التعامل معها. يحدث هذا لأن المحول البرمجي Go يحول ضمنيًا
int
إلى
float64
.
a := 1.0
البنائين والمدمرات
تتمثل مهمة المصممين في المعالجة الأولية للكائن وتهيئته ، والمدمّر هو تدمير الكائن بعد عمر الخدمة والذاكرة الخالية. على عكس النماذج الأخرى وجوه المنحى ، لا توجد فئات في الذهاب. ولذلك ، فإن مفهوم البنائين والمدمرات أيضا غير موجود.
مشغل الزائد
الحمولة الزائدة للمشغل هي الطريقة التي يمكن من خلالها للمشغلين إجراء عمليات معرفة بواسطة المستخدم. مشغلي تتصرف وفقا للحجج مرت. على سبيل المثال ، في C ++
+
يمكن استخدام عامل التشغيل لدمج السلاسل ، بالإضافة إلى إضافة رقمين صحيحين. يمكن أيضًا تعريف القيمة "+" بواسطة المستخدم وتغييرها وفقًا لاحتياجات البرنامج. في JavaScript ، سينتج عن تشغيل النوع
'1' + 1
إخراج السلسلة
"11"
نظرًا للأولوية العليا للسلاسل. لا يُسمح باستخدام هذه التعريفات في Go ، حيث يعمل المشغلون بصرامة ويقومون بالعمليات فقط مع أنواع بيانات معينة من الوسائط.
القيم الافتراضية
لا يسمح Go بالافتراضات في النماذج الأولية للوظيفة أو عندما يتم تحميل الوظائف بشكل زائد. مواصفات Go للغة صغيرة بشكل غير عادي وهي مدعومة بشكل خاص لتبسيط التحليل. على عكس اللغات الأخرى ، حيث يمكنك تمرير القيم الافتراضية / المعلمات الاختيارية إلى إحدى الوظائف ، في Go ، يمكنك فقط التحقق مما إذا تم تمرير قيمة. طريقة مختلفة للقيم الافتراضية في Go ستكون مثل هذا.
func Concat1(a string, b int) string { if a == "" { a = "default-a" } if b == 0 { b = 5 } return fmt.Sprintf("%s%d", a, b) }
ميراث
لأن Go لا يتبع التسلسل الهرمي المألوف لفئات البرمجة الموجهة للكائنات ، فإن الهياكل في Go ليست موروثة من بعضها البعض. بشكل عام ، الميراث هو إجراء بلغات OOP حيث يرث أحد الصفات خصائص وطريقة والديها. يمكن أن يذهب الميراث عميقًا إلى عدة مستويات. ومع ذلك ، في Go ، يمكن تجميع بنية ببساطة عن طريق توفير مؤشر أو تضمين في هياكل تعاونية. ويرد مثال على تكوين على الذهاب أدناه. يمكن أن تكون استبدال الفئات واجهات في Go. توجد واجهات بلغات أخرى ، لكن واجهات Go تكون ضمنية.
type TokenType uint16 type Token struct { Type TokenType Data string } type IntegerConstant struct { Token *Token Value uint64 }
البرمجة العامة
البرمجة العامة هي نموذج يتم من خلاله توصيل الأنماط المعروفة باسم الوراثة ، والتي ليست رمز مصدر حقيقيًا بالفعل ، ولكن يتم تجميعها بواسطة برنامج التحويل البرمجي لتحويلها إلى شفرة مصدر. دعنا نحاول فهم الأنماط بطريقة بسيطة. فكر في الأنماط في البرمجة كنموذج. نقوم بإنشاء نموذج يتم فيه ترك التفاصيل المهمة للقالب فارغة وتحتاج إلى تعبئتها لاحقًا أثناء التحويل البرمجي. ثم ، عندما نحتاج إلى إنشاء شيء ما من هذا القالب ، فإننا ببساطة نحدد التفاصيل ، على سبيل المثال ، النوع.
template<typename T> class MyContainer {
المقتطف أعلاه مكتوب بلغة C ++. لا يتم توفير القالب بنوع ، ولكنه يتم توفيره عند تهيئة MyContainer. يمكننا أيضًا تحديد أنواع أخرى ، مثل
float
،
double
، إلخ ، وفقًا لاحتياجاتنا. تكون القوالب المعممة مفيدة عند تشغيل الخوارزميات على مجموعة من البيانات من عدة أنواع.
استثناءات
يشير الاستثناء إلى وجود شرط معقول قد يرغب التطبيق في اعتراضه. من خلال الاستثناءات ، يمكننا حل المواقف التي لا يعمل فيها البرنامج. الاستثناء المحدد لا يؤدي إلى وقف كامل للتنفيذ ؛ يمكن اعتراضه ومعالجته. لا تحتوي Go على استثناءات ؛ فهي تحتوي فقط على أخطاء مثل الواجهات والأخطاء المدمجة. الفرق الرئيسي بين الأخطاء والاستثناءات هو أنها تشير إلى مشكلة خطيرة ويجب حلها على الفور ، لذلك تصبح برمجة Go أكثر صرامة. يجب التحقق من الأخطاء في Go بشكل صريح عند حدوثها.
وحدات الماكرو
وحدات الماكرو هي أوامر الماكرو. هذه طريقة لتقليل مهام البرمجة المتكررة عن طريق تحديد مخرجات محددة مسبقًا لمجموعة معينة من المدخلات. على سبيل المثال ، إذا أردنا الحصول على مربع رقم في C ، فيمكننا ببساطة كتابة
x * x
، حيث
x
متغير ، لكن يمكننا أيضًا تحديد ماكرو يُرجع مربع الرقم في كل مرة نحتاج إليها. وحدات الماكرو ليست وظائف. وحدات الماكرو غير متوفرة في Go.
#define square(x) ((x) * (x)) int main() { int four = square(2);
شروح الميزة
التعليقات التوضيحية هي وسيلة لربط البيانات الوصفية بمعلمات الوظيفة. في Python ، يتم دعم التعليقات التوضيحية بناءً على ذلك ، وهي اختيارية تمامًا. دعونا نلقي نظرة على مثال صغير لوصف التعليقات التوضيحية في بيثون.
def foo(a: int, b: 'description', c: float) -> float: print(a+b+c) foo(1, 3, 2)
في التعليمة البرمجية أعلاه ،
c
شرح المعلمات
a
و
b
و
c
مع بعض البيانات التعريفية.
c
شرح
a
و
c
بأنواع
int
و
float
، بينما
b
توفير
b
مع وصف السلسلة. ستطبع
foo
مخرجات محددة ، على الرغم من نوع الوسائط المذكورة في التعليقات التوضيحية.
تخزين الدفق المحلي
تخزين الدفق المحلي هو طريقة برمجة كمبيوتر تستخدم ذاكرة ثابتة أو عمومية مترجمة إلى دفق. هذه منطقة ثابتة حيث يتم نسخ البيانات لكل تدفق في البرنامج. عندما تستخدم تدفقات متعددة نفس البيانات الثابتة لنفس المهمة ، فيمكنها نسخها من تخزين الدفق المحلي بدلاً من تخزينها بمفردها.
استنتاج
ركز Go على البساطة والأناقة. لديها بناء جملة سريع وصغير وبسيط. على عكس لغات OOP الأخرى ، فإنه يحتوي على عدد أقل من المفاهيم التي يجب إيداعها في الرأس. اختار مبتكرو Go بساطة اللغة دون إضافة تعقيد مضاعف إلى الأجزاء المجاورة من اللغة. لذلك ، ليس لدى Go ميزات تجعل المحلل اللغوي أبطأ وأكبر. البساطة هي مفتاح البرامج الجيدة.
ملاحظة. يتم نسخ مقتطفات الشفرة في هذه المقالة من مقالات متنوعة على الإنترنت.
هذا كل شيء.
اقرأ الجزء الأول