البرمجة

فهم التوريث في Golang: هياكل بسيطة وكفاءة برمجية

عند النظر إلى الشيفرة التي قدمتها في الرابط المشار إليه، يظهر أن لغة البرمجة Golang تتبنى نهجًا مختلفًا للوراثة في الهياكل (structs) مقارنةً بلغات أخرى. في هذا السياق، يبدو أن هناك بعض الالتباسات حول كيفية استخدام وتهيئة هياكل البيانات التي تعتمد على التوريث في Golang.

عندما تقوم بتعريف هيكل البيانات Something الذي يرث من هيكل Base، فإنك في الواقع لا تحتاج إلى تحديد حقول Base عند إنشاء مثيل من نوع Something. بمعنى آخر، لا تحتاج إلى تفصيل a و b عند إنشاء مثيل من Something.

الشيفرة الصحيحة تكون كالتالي:

go
package main import "fmt" type Base struct { a string b string } type Something struct { Base c string } func main() { s := Something{ Base: Base{ a: "letter a", b: "letter b", }, c: "letter c", } fmt.Println(s.a, s.b, s.c) }

في هذا المثال، يتم تعيين قيم لحقول a و b من خلال تهيئة الجزء Base من Something. الخطأ الذي تم الإبلاغ عنه يعود إلى عدم الفهم الصحيح لكيفية التعامل مع حقول الهياكل الموروثة في Golang.

يجدر بالذكر أن Golang لا تدعم مصطلح “وراثة” بشكل صريح، بل تستخدم الهياكل المدمجة لتحقيق تأثير يشبه التوريث. هذا يتيح للمطورين تنظيم البيانات بشكل هرمي دون الحاجة إلى كلمات مفتاحية مثل extends أو inherits.

للمزيد من التوضيح وتفاصيل حول كيفية استخدام وتهيئة الهياكل في Golang، يمكن الاطلاع على مستندات لغة البرمجة Golang.

المزيد من المعلومات

بالتأكيد، دعونا نستكشف المزيد من المعلومات حول استخدام الهياكل والوراثة في لغة البرمجة Golang.

الهياكل في Golang:

في Golang، يُستخدم مصطلح “struct” لتعريف الهياكل. الهيكل يمكن أن يحتوي على حقول (fields) مختلفة، ويُستخدم لتمثيل بيانات متعددة الأنواع.

go
type Person struct { Name string Age int }

التوريث في Golang:

Golang لا تدعم التوريث بنفس الشكل الذي يتم استخدامه في بعض اللغات الأخرى. في الهياكل، يُمكن استخدام الهياكل المدمجة لتحقيق تأثير يشبه التوريث. في المثال الذي قدمته سابقًا:

go
type Base struct { a string b string } type Something struct { Base c string }

Something يحتوي على Base كجزء منه، ويمكن الوصول إلى حقول Base كجزء من Something.

كيفية إنشاء مثيل:

عند إنشاء مثيل من الهيكل Something، يُفضل تهيئة حقول Base مباشرة:

go
s := Something{ Base: Base{ a: "letter a", b: "letter b", }, c: "letter c", }

استخدام المثيل:

يمكن الوصول إلى حقول Base و Something بشكل منفصل:

go
fmt.Println(s.a) // "letter a" fmt.Println(s.b) // "letter b" fmt.Println(s.c) // "letter c"

استنتاج:

تُظهر لغة Golang سهولة في التعامل مع الهياكل والبيانات، وتقدم نهجًا مبسطًا لتنظيم البرمجة الموجهة للكائنات. على الرغم من عدم وجود مصطلح “وراثة” في السياق التقليدي، يمكن للمبرمجين تحقيق تأثير مشابه باستخدام الهياكل المدمجة.

مقالات ذات صلة

زر الذهاب إلى الأعلى

المحتوى محمي من النسخ !!