Avatar ·

الطريقة الاصطلاحية لتمثيل التعدادات (enum) في Go

مرحباً بالجميع! أنا مبتدئ في Go، أنتقل من Python وJava، ولا أستطيع إيجاد طريقة مناسبة لعمل تعداد (enum). في اللغات الأخرى اعتدت كتابة شيء مثل: ```python class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 ``` في Go لا يوجد نوع مدمج `enum`. جربت استخدام الثوابت مع `const` و `iota`، لكني أشعر أن هذا غير مكتمل. مثلاً، أريد إنشاء نوع لحالة الطلب: `New`، `Processing`، `Shipped`، `Delivered`، `Cancelled`. أحتاج إلى: 1. أن يقبل المتغير قيمة واحدة فقط من هذه القيم. 2. إمكانية التحقق مما إذا كانت القيمة صالحة. 3. من الجيد وجود دالة `String()` لعرض جميل. 4. وأن يكون هذا اصطلاحياً كما هو متبع في مجتمع Go. حتى الآن قمت بما يلي: ```go package main import "fmt" type OrderStatus int const ( New OrderStatus = iota Processing Shipped Delivered Cancelled ) func main() { status := New fmt.Println(s