الطريقة الاصطلاحية لتمثيل التعدادات (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