Avatar ·

كيفية إضافة طرق جديدة إلى نوع موجود في Go؟ (مثل int أو string)

مرحباً بالجميع! لقد بدأت للتو في تعلم Go بعد Python وC#، وواجهت مشكلة في توسيع وظائف الأنواع المضمنة. في Python كنت معتاداً على فعل ذلك: ```python # Python - monkey patching class MyInt(int): def is_even(self): return self % 2 == 0 print(MyInt(4).is_even()) # True ``` في C# هناك extension methods: ```csharp // C# Extension Method public static class IntExtensions { public static bool IsEven(this int value) { return value % 2 == 0; } } ``` الآن أحاول فعل الشيء نفسه في Go. أريد إضافة method `IsEven()` إلى type `int` للتحقق مما إذا كان الرقم زوجياً. إليك ما أحاول: ```go package main import "fmt" // أحاول توسيع int func (i int) IsEven() bool { return i%2 == 0 } func main() { x := 4 fmt.Println(x.IsEven()) } ``` المترجم يعطي خطأ: "cannot define new methods on non-local type int". أفهم أن Go أكثر تشدداً مع الأنواع، لكن كيف إذن؟