كيفية تنفيذ التعدادات (enums) بشكل صحيح واصطلاحي في Go؟
مرحباً بالجميع! أنا مبتدئ في Go، انتقلت من Java وPython، ولا أستطيع العثور على إجابة واضحة لسؤال بسيط: كيف يتم عمل التعدادات (enums) في Go؟
في Java كنت معتاداً على كتابة:
```java
public enum Season {
WINTER, SPRING, SUMMER, AUTUMN
}
```
في Python أستخدم `Enum` من المكتبة القياسية. أما في Go فأرى فقط `const` و `iota`، لكن هذا غير منطقي إلى حد ما — مجرد أرقام، ولا يوجد ضمان بأن شخصاً ما لن يمرر الرقم 999 بدلاً من "enum" الخاص بي.
أحتاج إلى تنفيذ حالة الطلب:
- New
- Processing
- Shipped
- Delivered
- Cancelled
أريد أن:
1. يكون هناك كتابة صارمة (لا يمكن تمرير رقم عشوائي).
2. يكون من السهل عرض الحالة كسلسلة نصية للسجلات وللمستخدم.
3. تكون هناك إمكانية للتحقق من أن القيمة ضمن المجموعة المسموح بها.
كيف يتم ذلك بشكل صحيح في Go؟ سمعت عن `iota`، لكنني لا أفهم كيف يمكن عمل enum كامل مع دوال. وأيضاً — لماذا لا يوجد enum أصلي في Go كما في اللغات الأخرى؟ هل هذا خطأ أم ميزة؟
من فضلكم، قدموا